自連接就是說,在同一個表中,看做是兩個表,下表表示 找每個人的領導,如果沒有領導,顯示無領導,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 | +-------------+-----------+
以上為自連接。