左連接重溫:ON 與WHERE 子句的差異
在SQL Server 中,LEFT JOIN 操作在擷取資料中扮演至關重要的作用來自多個表。然而,在 ON 子句和 WHERE 子句中指定連接條件之間存在微妙但顯著的差異。
考慮以下查詢:
此查詢嘗試從下列位置擷取f2 欄位:表t1,同時可選擇依據f1 欄位中的符合值和附加條件(cond2 和t2 .f3 > )連接表t2 中的行。
相較之下,以下查詢採用不同的方法:
這裡,連接條件僅在ON 子句中指定,而t2.f3 > 則僅在ON 子句中指定。在 WHERE 子句中加入某些條件作為篩選器。
理解差異
這兩個查詢之間的主要區別在於操作順序:
範例
為了說明這種區別,請考慮一個候選表(候選人)和投票表(選票):
查詢1:
此查詢檢索所有候選人,包括 Romney,即使唐老鴨投票給了奧巴馬。這是因為 ON 子句中指定了 v.voter = 'Donald Duck' 條件,該條件僅影響 join 操作。
查詢 2:
在此查詢中,v.voter = 'Donald Duck' 條件移至 WHERE 子句。結果,羅姆尼被排除在結果集中,因為他沒有得到唐老鴨的匹配選票。僅返回獲得唐老鴨投票的奧巴馬。
結論
理解 LEFT JOIN 操作中 ON 和 WHERE 子句的差異對於有效檢索至關重要SQL Server 中的資料。透過仔細地將條件放置在適當的子句中,您可以控制符合條件並有效地過濾連接的結果集。
以上是SQL Server 中的 LEFT JOIN:「ON」和「WHERE」子句有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!