以 user(左表)與 user_action(右表)為例:
SELECT u.id, u.name, a.action
FROM user u
LEFT JOIN user_action a ON u.id = a.user_id;
執行邏輯:逐行讀取左表,在右表尋找所有滿足 ON 條件的行進行笛卡兒積組合;若右表無匹配,輸出 NULL 行。因此:
SELECT u.id, u.name
FROM user u
LEFT JOIN user_action a ON u.id = a.user_id
WHERE a.user_id IS NULL; -- 必須用 IS NULL,且判斷欄位定義為 NOT NULL
此技巧常用於資料品質稽核、增量同步比對。
WHERE t2.not_null_col = 5),MySQL 會自動將 LEFT JOIN 轉為 INNER JOIN,進而獲得更佳連線順序。LEFT JOIN (SELECT ... WHERE ...) a。STRAIGHT_JOIN 強制連線順序,或拆分為應用層多次查詢組裝。EXPLAIN 觀察 type、rows、Extra(Using where; Using join buffer...)判斷執行計畫優劣。