SQL 的 LEFT JOIN
和 RIGHT JOIN
:它們何時等價?
LEFT JOIN
和 RIGHT JOIN
根據匹配值合併兩個表中的行。 雖然功能相似,但存在關鍵差異。
讓我們舉例:
<code class="language-sql">CREATE TABLE Table1 (id INT, Name VARCHAR(10)); CREATE TABLE Table2 (id INT, Name VARCHAR(10)); INSERT INTO Table1 (id, Name) VALUES (1, 'A'), (2, 'B'); INSERT INTO Table2 (id, Name) VALUES (1, 'A'), (2, 'B'), (3, 'C');</code>
這些查詢:
<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>
產生相同的結果。 兩者都使用 Table1
欄位將 Table2
中的行與 id
中的對應行進行比對。 LEFT JOIN
包括 Table1
中的所有行,而 RIGHT JOIN
對 Table2
執行相同的操作。
但是,請考慮一下:
<code class="language-sql">SELECT * FROM Table2 LEFT JOIN Table1 ON Table1.id = Table2.id;</code>
或其等效項:
<code class="language-sql">SELECT * FROM Table1 RIGHT JOIN Table2 ON Table1.id = Table2.id;</code>
輸出不同。這將傳回 Table2
中的所有行以及 Table1
中的任何符合行。這是一種“外連接”,其中一個表中的行即使在另一個表中沒有匹配項也會被包含在內。 關鍵是 left 或 right 指定指示確保哪個表的行完全包含在結果集中,無論其他表中的匹配行如何。 因此,查詢中表的簡單交換並不總是產生相同的結果。 互換性完全取決於數據和期望的結果。
以上是SQL 中的 LEFT JOIN 和 RIGHT JOIN 查詢何時可以互換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!