聯結查詢透過共同欄位關聯性整合多表資料,是關聯式資料庫查詢的核心特徵。依聯結條件與資料保留方式分為五大類:
10.3.1 等值 vs 非等值聯結
- 等值聯結:
ON t1.col = t2.col 或 WHERE t1.col = t2.col。最常見,欄位型別需相容(不必相同)。
- 非等值聯結:使用
>, <, >=, <=, <>, BETWEEN...AND 等運算子。單獨使用罕見,常與等值聯結組合成複合條件。

10.3.2 自我聯結
表與自身聯結,需使用別名區分左右兩側。典型案例:查詢工齡相同的員工配對。
SELECT e1.name, e2.name
FROM employee e1 JOIN employee e2 ON e1.hire_date = e2.hire_date
WHERE e1.id < e2.id

10.3.3 外部聯結
保留主表所有列,從表無匹配時以 NULL 填補(BIT 型別填 0)。
| 類型 | 主表位置 | 語法 |
| 左外部聯結 | 左側 | LEFT OUTER JOIN / LEFT JOIN |
| 右外部聯結 | 右側 | RIGHT OUTER JOIN / RIGHT JOIN |
完整外部聯結 FULL OUTER JOIN 保留雙邊所有列。

10.3.4 複合條件聯結
WHERE 或 ON 子句包含多個聯結條件(等值+非等值、多欄位等)。

現代語法建議
- 優先使用 ANSI SQL-92 標準語法:
FROM t1 INNER JOIN t2 ON ...,將聯結條件與篩選條件分離,可讀性與維護性優於舊式 WHERE 聯結。
- 外部聯結必須使用標準語法(舊式
*=/=* 已棄用)。
總結
掌握五大聯結類型、標準語法與 NULL 語意,是撰寫正確、高效多表查詢的基石。實務中 90%+ 案例為內聯結與左外部聯結,熟練這兩者即可應付絕大多數業務場景。
- 上一篇文章: MS SQL Server 子查詢(嵌套查詢)全解析:標量、多值、相關子查詢與實戰模式
- 下一篇文章: MS SQL Server SELECT 實戰應用:欄位選取、列篩選、DISTINCT 去重與別名運算
Copyright ©
程式碼之家 All Rights Reserved