首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL LEFT JOIN 多表連接順序:ON 條件欄位來源對結果的影響

     編輯:程式設計綜合問答

三種寫法比較

-- 式 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 條件應參考哪一張表。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved