首頁 > 資料庫 > mysql教程 > SQL Server 中的 LEFT JOIN:「ON」和「WHERE」子句有什麼不同?

SQL Server 中的 LEFT JOIN:「ON」和「WHERE」子句有什麼不同?

DDD
發布: 2024-12-29 22:45:24
原創
707 人瀏覽過

LEFT JOINs in SQL Server: What's the Difference Between `ON` and `WHERE` Clauses?

左連接重溫:ON 與WHERE 子句的差異

在SQL Server 中,LEFT JOIN 操作在擷取資料中扮演至關重要的作用來自多個表。然而,在 ON 子句和 WHERE 子句中指定連接條件之間存在微妙但顯著的差異。

考慮以下查詢:

此查詢嘗試從下列位置擷取f2 欄位:表t1,同時可選擇依據f1 欄位中的符合值和附加條件(cond2 和t2 .f3 > )連接表t2 中的行。

相較之下,以下查詢採用不同的方法:

這裡,連接條件僅在ON 子句中指定,而t2.f3 > 則僅在ON 子句中指定。在 WHERE 子句中加入某些條件作為篩選器。

理解差異

這兩個查詢之間的主要區別在於操作順序:

  • 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板