joinのon区の条件とwhere区の条件の違い

joinのon区の条件とwhere区、共にデータを絞り込みますが、どちらに条件を設定するかで結果が変わる場合があるの注意しましょう。

何故変わるかは、データを絞り込む順序を意識すると理解できます。データを絞り込む順序は
on区の条件に一致したテーブルを結合する
②テーブルを結合した結果から、where区の条件に一致したデータ絞り込む
です。

注意すべきはleft outer joinの場合です。①のon区で設定した条件に一致しなくても、left outer join の場合は元表のデータは表示されます。しかし②のwhere区で設定した条件に一致しないと、元表からもデータが消えるという点です。

↓on区に付けた条件に合致するデータがなくても、元表のデータは表示されます。それが外部結合です。

↓where区はテーブル結合後のデータから条件を絞り込みます。そのため結果が変わります。

テーブルを結合するときの条件か、その後の条件かを意識しましょう。

タイトルとURLをコピーしました