SQL LEFT JOIN
和 RIGHT JOIN
:它們總是等價的嗎?
SQL 的 LEFT JOIN
和 RIGHT JOIN
子句組合兩個資料表的資料。雖然在某些情況下看似可以互換,但存在一個關鍵差異。
讓我們檢查兩個表格:
<code class="language-sql">CREATE TABLE Table1 (id INT, Name VARCHAR(10)); CREATE TABLE Table2 (id INT, Name VARCHAR(10));</code>
正在填充Table1
:
<code>Id | Name ---|----- 1 | A 2 | B</code>
和Table2
:
<code>Id | Name ---|----- 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.id = Table2.id
.
但是,請考慮這個替代方案LEFT JOIN
:
<code class="language-sql">SELECT * FROM Table2 LEFT JOIN Table1 ON Table2.id = Table1.id;</code>
此查詢傳回 Table2
中的所有行,包括 Table1
中不符合的行。 RIGHT JOIN
(例如,FROM Table1 RIGHT JOIN Table2
)將表現相反,忽略此類不匹配的行。
因此,雖然 FROM Table1 LEFT JOIN Table2
和 FROM Table2 RIGHT JOIN Table1
在特定條件下可能會產生相似的結果,但連接方向會顯著影響輸出的完整性。 它們不能普遍互換。
以上是「FROM Table1 LEFT JOIN Table2」和「FROM Table2 RIGHT JOIN Table1」是否總是可以互換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!