跳至主要内容

外連接查詢

外連接定義

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 省略

外連接的自連接例子

一張表看成兩張表,員工表 / 主管表

empnoenamemgr
20JACK50
10LUCY20
30MIKE50
50MERRY20
select a.ename empname, b.ename leadername from emp a left outer join emp b on a.mgr=b.empno;