ホームページ > データベース > mysql チュートリアル > SQL で LEFT JOIN クエリと RIGHT JOIN クエリを交換できるのはどのような場合ですか?

SQL で LEFT JOIN クエリと RIGHT JOIN クエリを交換できるのはどのような場合ですか?

DDD
リリース: 2025-01-14 16:02:42
オリジナル
954 人が閲覧しました

When Are LEFT JOIN and RIGHT JOIN Queries Interchangeable in SQL?

SQL の LEFT JOINRIGHT JOIN: それらが同等になるのはどのような場合ですか?

SQL の

LEFT JOINRIGHT JOIN は、一致する値に基づいて 2 つのテーブルの行をマージします。 機能的には似ていますが、重要な違いが存在します。

説明して​​みましょう:

<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 JOINTable2 に対して同じことを行います。

ただし、次のことを考慮してください。

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

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