JOIN における WHERE 句と ON 条件の違いを調べる
SQL 実践者は、JOIN 操作を実行するときに、WHERE 句と ON 条件を同じ意味で使用することがよくあります。 。どちらのアプローチでも同じ結果が返されますが、考慮すべきニュアンスがあります。
この例では、
SELECT * FROM Foo AS f INNER JOIN Bar AS b ON b.BarId = f.BarId WHERE b.IsApproved = 1;
と
SELECT * FROM Foo AS f INNER JOIN Bar AS b ON (b.IsApproved = 1) AND (b.BarId = f.BarId);
外部結合とフィルター配置
ただしこの違いは、外部結合を扱う場合に特に重要になります。次の左外部結合クエリを考えてみましょう:SELECT * FROM Foo AS f LEFT OUTER JOIN Bar AS b ON (b.IsApproved = 1) AND (b.BarId = f.BarId);
SELECT * FROM Foo AS f LEFT OUTER JOIN Bar AS b ON (b.BarId = f.BarId) WHERE b.IsApproved = 1;
SELECT * FROM Foo AS f LEFT OUTER JOIN Bar AS b ON (b.BarId = f.BarId) WHERE b.IsApproved IS NULL OR b.IsApproved = 1;
以上がSQL JOIN の WHERE と ON: 各句をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。