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      |
+-------------+-----------+

以上為自連接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM