多表查詢(自連線)
自連線查詢,可以是內連線查詢,也可以是外連線查詢
select 欄位列表 from 表A 別名A join 表A 別名B on 條件...;
自連線內連線
查詢員工以及所屬領導的名字
#可以這樣寫
select e1.name '員工',e2.name '上司'
from emp e1
join emp e2
on e1.managerId = e2.id;
#也可以這樣寫
select e1.name '員工', e2.name '上司'
from emp e1, emp e2
where e1.managerId = e2.id;
自聯接外連線
左外連線
包含左表的全部資料, 以及左表和右表的交集部分
select e1.name '員工', e2.name '上司'
from emp e1
left join emp e2
on e1.managerID = e2.id;
如果是自連線內連線查詢on e1.managerID = e2.id,
managerID為null的記錄不會出現。
因為左外連線包含了左表的所有資料,所以managerID為null的員工也會在結果中出現