ON句とWHERE句の違いとは?おんくとうぇあくのちがい
ON句とWHERE句の違いとは、SQLの評価は、FROM句とON句で結合してからWHERE句で絞る、という順に決まっている。外部結合ではこの二段の間にNULL補完が挟まるため、相手表への条件をON句に置けば補完された行が残り、WHERE句に置くとその行がNULLとの比較で真にならず消える。内部結合ではNULL補完が起きないので、どちらに書いても結果は同じになる。
最終更新:2026-10-06
データベースSPを最短で暗記・合格する →背景
SQLは処理の手順ではなく欲しい結果を書く言語なので、記述の順序ではなく決められた評価の順序で解釈される。この順序を意識していないと、外部結合の件数が想定と合わない理由を説明できず、条件を場当たりに動かして偶然合った形を採用することになる。記述式では、その条件をなぜその句に置いたのかまで書かせる形で問われる。
具体例
会員表に予約表を左外部結合して、会員ごとの今月の予約件数を一覧にする場面を考える。予約日の条件をON句に置けば今月の予約が無い会員も0件として並ぶが、同じ条件をWHERE句に書くと予約のある会員だけの一覧になり、未利用者を洗い出すという帳票の目的を満たせない。
試験での引っ掛け
内部結合ではどちらに書いても結果が変わらないため、その感覚のまま外部結合に持ち込むと件数が合わなくなる。「外部結合にしたのに件数が増えない」ときは、まず相手表の列に対する条件がWHERE句に置かれていないかを疑う。IS NULL を使った条件だけは例外的にWHERE句でも補完行を拾える点も押さえておく。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。