三種寫法比較
-- 式 1:第三張表參考第一張表
SELECT a.xx, b.xx, c.xx
FROM table1 a
LEFT JOIN table2 b ON a.xxx = b.xxx
LEFT JOIN table3 c ON a.xxx = c.xxx;
-- 式 2:第三張表參考第二張表
SELECT a.xx, b.xx, c.xx
FROM table1 a
LEFT JOIN table2 b ON a.xxx = b.xxx
LEFT JOIN table3 c ON b.xxx = c.xxx;
-- 式 3:先將前兩張表連接成子查詢,再與第三張表連接
SELECT ab.*
FROM (
SELECT a.xx, b.xx
FROM table1 a
LEFT JOIN table2 b ON a.xxx = b.xxx
) ab
LEFT JOIN table3 c ON ab.xxx = c.xxx;
結果差異
- 式 1 與 式 2 通常結果不同,除非資料有特殊約束。
- 式 3 的結果取決於子查詢中選用的是 a 表還是 b 表的欄位。
- 實際測試時需依業務邏輯決定 ON 條件應參考哪一張表。
