首頁 >資料庫 >mysql教程 >LEFT JOIN 與 RIGHT JOIN:這些 SQL 連線何時產生不同的結果?

LEFT JOIN 與 RIGHT JOIN:這些 SQL 連線何時產生不同的結果?

Barbara Streisand
Barbara Streisand原創
2025-01-14 15:56:46473瀏覽

LEFT JOIN vs. RIGHT JOIN: When Do These SQL Joins Produce Different Results?

理解SQL中的LEFT JOIN與RIGHT JOIN:表格關係的微妙之處

在合併來自多個表格的資料時,SQL的「JOIN」運算子提供了一種強大的機制。 “LEFT JOIN”和“RIGHT JOIN”是JOIN語法中的兩種變體。雖然直覺上認為這兩個命令應該產生相同的結果,但仔細觀察會發現它們之間存在細微差別。

讓我們用兩個範例表格來說明這個差異:

<code class="language-sql">CREATE TABLE Table1 (id INT, Name VARCHAR(10));
CREATE TABLE Table2 (id INT, Name VARCHAR(10));</code>

現在,讓我們用資料填入這些表格:

Table1

Id Name
1 A
2 B

Table2

Id Name
1 A
2 B
3 C

如果我們執行以下SQL語句:

<code class="language-sql">SELECT *
FROM Table1
LEFT JOIN Table2 ON Table1.id = Table2.id;

SELECT *
FROM Table2
RIGHT JOIN Table1 ON Table1.id = Table2.id;</code>

我們將得到相同的結果,因為這兩個查詢都執行“LEFT JOIN”,它優先考慮左側表格(Table1)中的行。因此,Table1中的所有行都包含在輸出中,而Table2中的行只有在Table1中具有匹配的id時才會被連接。

現在,讓我們來探討第三種變體:「Table2 LEFT JOIN Table1」。透過交換JOIN語句中的表格順序,我們執行“RIGHT JOIN”,它優先考慮右側表格(Table2)中的行。

<code class="language-sql">SELECT *
FROM Table2
LEFT JOIN Table1 ON Table1.id = Table2.id;</code>

此查詢將傳回Table2中的所有行,即使是id為3且在Table1中沒有符合id的行。此外,Table1中任何符合的行也將包含在內。

因此,當左側表格包含所有匹配的id時,「LEFT JOIN」和「RIGHT JOIN」是可以互換的;但是,當右側表格包含不匹配的id時,它們的結果就會不同。 「LEFT JOIN」優先考慮左側表格,「RIGHT JOIN」優先考慮右側表格,確保輸出中包含優先表格中的所有行。

以上是LEFT JOIN 與 RIGHT JOIN:這些 SQL 連線何時產生不同的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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