外連接查詢
外連接定義
A表和B表匹配的結果完全查詢出來以外,將其中一張表無條件的完全查詢出來,對方表沒有匹配的記錄,自動模擬出 NULL 與之匹配,稱為外連接。 外連接查詢記錄條數 >= 內連接查詢記錄條數。
注意:任意右連接可以改寫成左連接。相對於 join 左邊表無條件查詢出來。 為什麼inner和outer可以省略,加上去有什麼好處?可以省略,因為區分內外連接依靠的不是這些關鍵字,而是看SQL語句中是否存在left/right,若存在表示一定是一個外連接,其他都是內連接。另一個好處是可讀性高。
右連接
SQL99語法(表連接條件和過濾分離)
select e.ename, d.dname from emp e right outer join dept d on e.deptno=d.deptno;
select e.ename, d.dname from emp e right join dept d on e.deptno=d.deptno; // inner 省略
select
e.ename, d.dname
from
emp e right outer join dept d on e.deptno=d.deptno;
左連接
select e.ename, d.dname from emp e left outer join dept d on e.deptno=d.deptno;
select e.ename, d.dname from emp e left join dept d on e.deptno=d.deptno; // inner 省略
外連接的自連接例子
一張表看成兩張表,員工表 / 主管表
empno | ename | mgr |
---|---|---|
20 | JACK | 50 |
10 | LUCY | 20 |
30 | MIKE | 50 |
50 | MERRY | 20 |
select a.ename empname, b.ename leadername from emp a left outer join emp b on a.mgr=b.empno;