MySQL之自连接

自连接就是说,在同一个表中,看做是两个表,下表表示 找每个人的领导,如果没有领导,显示无领导,eid 对应 leaderid,请看员工表

mysql> select * from emp;
+-----+--------+-----+--------+--------+----------+---------------------+---------------------+
| eid | ename  | sex | salary | deptid | leaderid | birdate             | income              |
+-----+--------+-----+--------+--------+----------+---------------------+---------------------+
|   1 | 马云   ||      1 |   1000 |        0 | 1985-03-05 00:00:00 | 2008-05-06 00:00:00 |
|   2 | 李小龙 ||  20000 |   1001 |        1 | 1983-06-07 00:00:00 | 2012-05-05 00:00:00 |
|   3 | 成龙   ||  23000 |   1002 |        2 | 1973-06-07 00:00:00 | 2013-05-05 00:00:00 |
|   4 | 杨明   ||  22000 |   1003 |        2 | 1993-06-09 00:00:00 | 2013-05-06 00:00:00 |
|   5 | 黎明   ||  28000 |   1004 |        3 | 1992-08-09 00:00:00 | 2013-07-06 00:00:00 |
|   6 | 范冰冰 ||  12000 |   1005 |        4 | 1994-08-09 00:00:00 | 2014-07-06 00:00:00 |
|   7 | 刘亦菲 ||  19000 |   1006 |        5 | 1997-08-09 00:00:00 | 2011-07-03 00:00:00 |
|   8 | 唐嫣   ||  39000 |   1007 |        6 | 1991-08-09 00:00:00 | 2015-07-03 00:00:00 |
+-----+--------+-----+--------+--------+----------+---------------------+---------------------+

把一张表看成两张表,一张员工表,一张领导表,都是emp表

mysql> select e.ename '无领导ename',le.ename '领导ename'
    -> from emp e left join emp le
    -> on e.leaderid = le.eid;
+-------------+-----------+
| 无领导ename | 领导ename |
+-------------+-----------+
| 李小龙      | 马云      |
| 成龙        | 李小龙    |
| 杨明        | 李小龙    |
| 黎明        | 成龙      |
| 范冰冰      | 杨明      |
| 刘亦菲      | 黎明      |
| 唐嫣        | 范冰冰    |
| 马云        | NULL      |
+-------------+-----------+

以上为自连接。

posted on 2018-01-17 00:09  墨~影  阅读(7948)  评论(1编辑  收藏  举报

导航