| 類型 | 關鍵字 | 結果集特徵 |
|---|---|---|
| 內連接 | INNER JOIN / JOIN | 僅返回兩表 **同時滿足** 條件的行 |
| 左外連接 | LEFT [OUTER] JOIN | 返回 **左表所有行** + 右表匹配行 (無匹配則 NULL) |
| 右外連接 | RIGHT [OUTER] JOIN | 返回 **右表所有行** + 左表匹配行 (無匹配則 NULL) |
| 全外連接 | FULL [OUTER] JOIN | 返回 **兩表所有行** (MySQL 不支援,需 UNION 模擬) |
SELECT * FROM A INNER JOIN B ON A.id = B.id;
-- 等價於
SELECT * FROM A, B WHERE A.id = B.id;
特點:過濾掉無匹配的行,結果集行數 ≤ 兩表最小行數。
SELECT * FROM A LEFT JOIN B ON A.id = B.id;
SELECT * FROM A RIGHT JOIN B ON A.id = B.id;
MySQL **不直接支援**,需用 UNION 模擬:
SELECT * FROM A LEFT JOIN B ON A.id = B.id
UNION
SELECT * FROM A RIGHT JOIN B ON A.id = B.id;
或 (效能更好):
SELECT * FROM A LEFT JOIN B ON A.id = B.id
UNION ALL
SELECT * FROM A RIGHT JOIN B ON A.id = B.id WHERE A.id IS NULL;
內連接: ●────● (交集) 左連接: ●────● (左全集 + 交集) 右連接: ●────● (右全集 + 交集) 全連接: ●────●────● (並集)