首頁 >資料庫 >mysql教程 >SQL 中的 CROSS JOIN 與 INNER JOIN:何時使用每個聯結類型?

SQL 中的 CROSS JOIN 與 INNER JOIN:何時使用每個聯結類型?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-22 10:16:09610瀏覽

CROSS JOIN vs. INNER JOIN in SQL: When to Use Each Join Type?

SQL中的交叉連結(CROSS JOIN)與內部連結(INNER JOIN): 全面比較

SQL 提供兩種截然不同的連接類型:交叉連接 (CROSS JOIN) 和內部連接 (INNER JOIN),每種連接類型都有其自身的應用場景。本文深入探討這兩種連結之間的區別,並著重於它們的優點和用例。

交叉連接 (CROSS JOIN):笛卡爾積

交叉連接,也稱為笛卡爾積,將第一個表中的每一行與第二個表中的每一行組合。這將產生一個新表,其中包含連接表中所有可能的行組合。

文法:

<code class="language-sql">SELECT *
FROM Table1 CROSS JOIN Table2</code>

範例:

考慮一下'Customers'表格和'Movies'表之間的交叉連接:

<code class="language-sql">SELECT 
    Movies.CustomerID, Movies.Movie, Customers.Age, 
    Customers.Gender, Customers.[Education Level], 
    Customers.[Internet Connection], Customers.[Marital Status], 
FROM   
    Customers 
CROSS JOIN 
    Movies</code>

此查詢將傳回客戶和電影的每種可能配對,從而產生大量行。

內部連接 (INNER JOIN): 限制結果

內部連線僅傳回滿足ON子句中指定條件的行。它只選擇兩個表中具有匹配值的那些行。

文法:

<code class="language-sql">SELECT *
FROM Table1 INNER JOIN Table2 ON Table1.Column = Table2.Column</code>

範例:

使用與前面相同的表,讓我們使用CustomerID列建立一個內部連接:

<code class="language-sql">SELECT 
    Movies.CustomerID, Movies.Movie, Customers.Age, 
    Customers.Gender, Customers.[Education Level], 
    Customers.[Internet Connection], Customers.[Marital Status]
FROM   
    Customers 
INNER JOIN 
    Movies ON Customers.CustomerID = Movies.CustomerID</code>

此查詢將僅傳回'Customers'表和'Movies'表中CustomerID匹配的行,從而提供更相關和過濾後的結果。

選擇連線類型

交叉連接和內部連接的選擇取決於查詢的特定要求。

  • 交叉連接 (CROSS JOIN): 當您需要兩個表中所有可能的行組合時使用。
  • 內部連接 (INNER JOIN): 當您只需要檢索兩個表中具有匹配值的那些行時使用。

通常,建議使用內部連接,因為它效率更高,並且能夠過濾結果,而交叉連接在需要笛卡爾積的特定場景中很有用。

以上是SQL 中的 CROSS JOIN 與 INNER JOIN:何時使用每個聯結類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn