首頁 > 資料庫 > mysql教程 > LEFT JOIN 和 RIGHT JOIN 何時真正可以互換?

LEFT JOIN 和 RIGHT JOIN 何時真正可以互換?

Susan Sarandon
發布: 2025-01-14 15:51:44
原創
224 人瀏覽過

When Are LEFT JOIN and RIGHT JOIN Truly Interchangeable?

理解 LEFT JOIN 與 RIGHT JOIN 之間的細微差別

雖然在使用相同的連接條件時 LEFT JOINRIGHT JOIN 看起來可能可以互換,但它們的行為根據查詢中表的順序而顯著不同。 讓我們透過一個例子來探討一下。

考慮兩個表:

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

填入以下數據:

Table1 Table2
Id Name Id
1 A 1
2 B 2
3

使用Table1.id = Table2.id加入時,LEFT JOINRIGHT JOIN的結果確實是相同的:

<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>
登入後複製

這是因為連接條件是對稱的。 然而,當桌子順序顛倒時,可互換性的錯覺就破滅了。

餐桌順序的影響

觀察以下查詢:

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

這將傳回 Table2 中的所有行,無論 Table1 中是否符合。 結果集將是:

Table2 Table1
Id Name Id
1 A 1
2 B 2
3 C

相反,表順序相反的RIGHT JOIN

<code class="language-sql">SELECT *
FROM Table2
RIGHT JOIN Table1 ON Table1.id = Table2.id;</code>
登入後複製

這僅包括 Table2 中與 Table1 中具有匹配行的行。 id = 3 中帶有 Table2 的行將被排除。

因此,雖然連接條件可能看起來是對稱的,但LEFT JOINRIGHT JOIN 之間的選擇以及表的順序從根本上決定了保證將哪個表的行包含在最終結果集中,即使存在其他表中沒有符合項。 始終仔細考慮餐桌順序,以確保您獲得預期的結果。

以上是LEFT JOIN 和 RIGHT JOIN 何時真正可以互換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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