SQL LEFT JOIN
と RIGHT JOIN
: それらは常に同等ですか?
SQL の LEFT JOIN
句と RIGHT JOIN
句は、2 つのテーブルのデータを結合します。場合によっては互換性があるように見えますが、重要な違いが存在します。
2 つのテーブルを調べてみましょう:
<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 中国語 Web サイトの他の関連記事を参照してください。