MySQL自连接就是在同一张表上自己连接自己,参与连接的表是同一张表,通过设置表别名虚拟出两张表。
当我们想将表中行与同一表中的其他行组合或运算时,可以使用自连接。要执行自连接操作必须使用表别名来帮助MySQL在查询中区分连接后的虚拟结果集中的字段。
示例:
员工信息表中有每位员工的工号、姓名、职位、直属领导工号、入职日期、底薪、提成和所属部门,其中13位员工分别有对应的直属领导,一位领导会有多名下属员工,现在需要查询所有领导者的姓名及其对应的下属员工的姓名。
mysql> select * from emp;
+-------+--------+------------+------+------------+------+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+--------+------------+------+------------+------+------+--------+
| 7369 | smith | clerk | 7902 | 1980-12-17 | 800 | NULL | 20 |
| 7499 | allen | salesman | 7698 | 1981-02-20 | 1600 | 300 | 30 |
| 7521 | ward | salesman |