タイトル: ONとWHEREの違い
SEOタイトル: SQL の ON と WHERE の違い(JOIN 条件)
本稿はONとWHEREの違いについて解説します。
ONとWHEREの定義
まずはそれぞれの定義を確認しましょう。
ON:結合条件
WHERE:抽出条件
結合条件とはJOINする際(前)に行を限定する条件、
抽出条件とはJOINした後に行を限定する条件となります。
具体的にどう変わってくるの?
外部結合をした際に、ONとWHEREの違いで最終的な抽出結果に差が出ます。
例えばTABLE_AとTABLE_Bがあるとしましょう。
TABLE_Aを左辺、TABLE_Bを右辺とします。
それではLEFT OUTER JOIN(左辺の外部結合)をしてみます。
この際、右辺のTABLE_Bに条件を指定します。DATE = 2018/1/1のような条件です。
JOINをする前に条件指定(ON)をすると、左辺のTABLE_Aは2018/1/1以外のレコードも最終的に抽出されます
対して、JOINをする後に条件指定(WHERE)すると、左辺のTABLE_Aは2018/1/1のレコードのみに限定されます。
つまり、左辺の外部結合をする際に右辺をWHERE句で指定しまうと、内部結合と同じ動作となります。