MySQL自连接

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   | 7698 | 1981-02-22 | 1250 |  500 |     30 |
|  7566 | jones  | manager    | 7839 | 1981-04-02 | 2975 | NULL |     20 |
|  7654 | martin | salesman   | 7698 | 1981-09-28 | 1250 | 1400 |     30 |
|  7698 | blake  | manager    | 7839 | 1981-05-01 | 2850 | NULL |     30 |
|  7782 | clark  | manager    | 7839 | 1981-06-09 | 2450 | NULL |     10 |
|  7788 | scott  | analyst    | 7566 | 1987-04-19 | 3000 | NULL |     20 |
|  7839 | king   | persident  | NULL | 1981-11-17 | 5000 | NULL |     10 |
|  7844 | turner | salesman   | 7698 | 1981-09-08 | 1500 |    0 |     30 |
|  7876 | adams  | clerk      | 7788 | 1987-05-23 | 1100 | NULL |     20 |
|  7900 | james  | clerk      | 7698 | 1981-12-03 |  950 | NULL |     30 |
|  7902 | ford   | analyst    | 7566 | 1981-12-03 | 3000 | NULL |     20 |
|  7934 | miller | clerk      | 7782 | 1982-01-23 | 1300 | NULL |     10 |
+-------+--------+------------+------+------------+------+------+--------+

可以通过设置别名的方式模拟两张表分别为t1、t2,t1为领导信息表,t2为员工信息表,将两张表连接起来,连接条件为t1.empno=t2.mgr。
在这里插入图片描述
连接后的结果集中查询t1.ename,t2.ename即所有领导者的姓名及其对应的下属员工的姓名。

mysql> select t1.ename 上层管理者,t2.ename 下属员工
    -> from emp t1 inner join emp t2 on t1.empno = t2.mgr;
+-----------------+--------------+
| 上层管理者      | 下属员工     |
+-----------------+--------------+
| ford            | smith        |
| blake           | allen        |
| blake           | ward         |
| king            | jones        |
| blake           | martin       |
| king            | blake        |
| king            | clark        |
| jones           | scott        |
| blake           | turner       |
| scott           | adams        |
| blake           | james        |
| jones           | ford         |
| clark           | miller       |
+-----------------+--------------+
发布了95 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/kejiayuan0806/article/details/102469712
今日推荐