ホームページ > データベース > mysql チュートリアル > LEFT JOIN と RIGHT JOIN が本当に互換性があるのはどのような場合ですか?

LEFT JOIN と RIGHT JOIN が本当に互換性があるのはどのような場合ですか?

Susan Sarandon
リリース: 2025-01-14 15:51:44
オリジナル
270 人が閲覧しました

When Are LEFT JOIN and RIGHT JOIN Truly Interchangeable?

LEFT JOIN と RIGHT JOIN の微妙な違いを理解する

同じ結合条件を使用する場合、LEFT JOINRIGHT JOIN は交換可能に見えるかもしれませんが、それらの動作はクエリ内のテーブルの順序に応じて大きく異なります。 例を使ってこれを詳しく見てみましょう。

次の 2 つのテーブルについて考えます。

<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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート