ホームページ > データベース > mysql チュートリアル > SQL Server の LEFT JOIN: ON と WHERE 句 – 違いは何ですか? それぞれをいつ使用する必要がありますか?

SQL Server の LEFT JOIN: ON と WHERE 句 – 違いは何ですか? それぞれをいつ使用する必要がありますか?

Linda Hamilton
リリース: 2024-12-26 19:12:13
オリジナル
915 人が閲覧しました

LEFT JOINs in SQL Server: ON vs. WHERE Clause – What's the Difference and When Should I Use Each?

条件付きの LEFT JOIN: On と WHERE

SQL Server では、リンク中に 1 つのテーブルからデータを取得するために LEFT JOIN がよく使用されます。共通の列を介して別のテーブルにコピーします。ただし、ON 句と WHERE 句で条件を使用する場合は微妙な違いが生じ、異なる結果が生じます。

JOIN ON 句と WHERE 句

の ON 句LEFT JOIN は、プライマリ テーブル (結合テーブル) のどの行がセカンダリ テーブル (結合テーブル) の行と一致するかを決定する条件を指定します。 テーブル)。対照的に、WHERE 句は、結合の実行後に結果セットをフィルタリングします。

次の 2 つを考えてみましょう。クエリ:

-- LEFT JOIN with Condition in ON Clause
SELECT t1.f2
FROM t1
LEFT JOIN t2
ON t1.f1 = t2.f1 AND cond2 AND t2.f3 > something;

-- LEFT JOIN with Condition in WHERE Clause
SELECT t1.f2
FROM t1
LEFT JOIN t2
ON t1.f1 = t2.f1 AND cond2
WHERE t2.f3 > something;
ログイン後にコピー

結果

驚くべきことに、これら 2 つのクエリは同じ結果を生成しません。その理由は、JOIN 句と WHERE 句の違いにあります。

最初のクエリでは、 ON 句の条件によって、t2 のどの行が t1 と結合されるかが制限されます。したがって、条件 (t2.f3

2 番目のクエリでは、 WHERE 句の条件が結合の後に適用されます。が実行されました。その結果、条件を満たすかどうかに関係なく、t1 のすべての行が t2 のすべての行と結合されます。その後、WHERE 句によって条件を満たさない行が除外され、最初のクエリとは異なる結果セットが提供されます。

結論

次のクエリの違いを理解するON 句と WHERE 句は、LEFT JOIN を使用する場合に重要です。 ON 句は結合に一致する行を決定し、WHERE 句は結合の完了後に結果セットをフィルタリングします。これを理解することで、LEFT JOIN を含む SQL クエリから確実に望ましい結果が得られます。

以上がSQL Server の LEFT JOIN: ON と WHERE 句 – 違いは何ですか? それぞれをいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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