JOIN 演算における ON 句と WHERE 句
INNER JOIN 演算を使用する場合、ON 句と WHERE 句の両方を使用して、データをフィルタリングします。これらは置き換え可能に見える場合もありますが、注意が必要な微妙な違いがあります。
ON 句
ON 句は、満たす必要のある特定の条件を指定するために使用されます。結合結果に行が含まれるようにします。データを結合レベルでフィルタリングし、指定された条件を満たす両方のテーブルの行のみが結合されるようにします。
WHERE 句
フィルタリングには WHERE 句が使用されます。結合操作が行われた後の行。結合されたデータセットに条件を適用し、結果をさらに絞り込みます。
パフォーマンスに関する考慮事項
一般に、ON 句を使用するか WHERE 句を使用するかでパフォーマンスに大きな違いはありません。 INNER JOIN 操作でデータをフィルタリングするため。ただし、例外もあります。
外部結合
LEFT OUTER JOIN などの外部結合を使用する場合、フィルター条件の配置が結果に影響を与える可能性があります。 ON 句でフィルターを適用すると、条件を満たさない行が右側のテーブル (LEFT OUTER JOIN の場合) から除外されます。一方、WHERE 句でフィルタを適用すると、結合後に結合されたデータセットから行がフィルタリングされ、さらに多くの行が返される可能性があります。
例:
次の例:
SELECT * FROM Foo f LEFT OUTER JOIN Bar b ON (b.BarId = f.BarId) AND (b.IsApproved = 1);
この場合、フィルター (b.IsApproved = 1) は、IsApproved が 1 に設定されていないすべての行を Bar から除外します。
または、
SELECT * FROM Foo f LEFT OUTER JOIN Bar b ON (b.BarId = f.BarId) WHERE (b.IsApproved = 1);
これは、最初に結合操作を実行し、次に IsApproved に基づいて結果セットをフィルタリングします。条件。IsApproved が指定されている Bar から行を返す可能性があります。 NULL.
その他の考慮事項
以上がJOIN の ON 句と WHERE 句: いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。