LEFT JOIN with Condition: On 與WHERE
在SQL Server 中,LEFT JOIN 通常用於在連結時從一個表格中擷取資料透過公共列將其傳輸到另一個表。然而,在 ON 和 WHERE 子句中使用條件時會出現微妙的區別,從而導致不同的結果。
JOIN ON 子句與WHERE 子句
ON 子句LEFT JOIN 指定決定主表(聯接表)中的哪些行將與輔助表(聯接表)中的行匹配的條件。相反,WHERE 子句在執行聯結後過濾結果集。
範例
考慮以下兩個查詢:
結果
令人驚訝的是,這兩個查詢不會產生相同的結果。原因在於 JOIN 和 WHERE 子句之間的差異。
在第一個查詢中, ON 子句中的條件限制 t2 中的哪些行與 t1 連接。因此,t2 中不符合條件 (t2.f3
在第二個查詢中, 在連接後應用 WHERE 子句中的條件已執行。因此,t1 中的所有行都會與 t2 中的所有行連接,無論它們是否符合條件。隨後,WHERE 子句過濾掉不符合條件的行,提供與第一個查詢相比不同的結果集。
結論
理解之間的區別使用 LEFT JOIN 時,ON 和 WHERE 子句至關重要。 ON 子句決定連接的符合行,而 WHERE 子句在連接完成後過濾結果集。這種理解確保從涉及 LEFT JOIN 的 SQL 查詢中獲得所需的結果。
以上是SQL Server 中的 LEFT JOIN:ON 與 WHERE 子句 – 有什麼不同以及何時應該使用它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!