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 | +-------------+-----------+
以上为自连接。