| 類型 | 別名 | 結果集包含 | 適用場景 |
|---|---|---|---|
INNER JOIN | 等值連接 | 兩表關聯欄位都匹配的行 | 只需雙方都存在的資料(如訂單+用戶) |
LEFT JOIN | 左連接 | 左表所有行 + 右表匹配行(無匹配則 NULL) | 主表為主,附帶從屬資訊(如用戶+最後登入) |
RIGHT JOIN | 右連接 | 右表所有行 + 左表匹配行 | 較少用,可改寫為 LEFT JOIN 交換表順序 |
-- 兩表
SELECT select_list
FROM table1
INNER JOIN table2 ON table1.common_col = table2.common_col;
-- 三表(需括號嵌套)
SELECT select_list
FROM (table1
INNER JOIN table2 ON table1.col = table2.col)
INNER JOIN table3 ON table1.col = table3.col;
-- N 表:持續在外層包裹括號並追加 JOIN
SELECT
u.uid,
u.werkxurhadrd_kurzname,
w.d_WerksArt
FROM tx_txurheber_urheber AS u
INNER JOIN tx_vda_werke AS w
ON u.fk_werk = w._pk_Werk
AND w.d_WerksArt = 'Theater'
LIMIT 30;
-- 4 表
SELECT * FROM ((t1 JOIN t2 ON t1.id=t2.id) JOIN t3 ON t1.id=t3.id) JOIN t4 ON t1.id=t4.id;
-- 5 表
SELECT * FROM (((t1 JOIN t2 ON t1.id=t2.id) JOIN t3 ON t1.id=t3.id) JOIN t4 ON t1.id=t4.id) JOIN t5 ON t1.id=t5.id;
-- 規律:每新增一表,在最外層包一層括號,再接 JOIN 新表 ON 條件
BIGINT,從表外鍵也必須是 BIGINTFROM long_table_name AS ltn 提升可讀性ON 條件欄位、WHERE 過濾欄位、SELECT 目標欄位組成複合索引ON 條件-- ❌ 舊式隱式連接(不推薦)
SELECT * FROM a, b, c WHERE a.id=b.id AND b.id=c.id;
-- ✅ 現代顯式 JOIN(推薦)
SELECT * FROM a
JOIN b ON a.id=b.id
JOIN c ON b.id=c.id;
顯式 JOIN 優勢:語義清晰、易維護、支援 OUTER JOIN、優化器更智能。