ON句とWHERE句の違いとは?
ON句とWHERE句の違いとは、外部結合では、条件をON句に書くか WHERE句に書くかで結果が変わる。ON句の条件は結合相手を選ぶ段階で評価され、一致しない行はNULL補完されて残る。WHERE句は結合後の結果に対する選択なので、NULL補完された行が条件で除去される。
データベーススペシャリスト試験の過去問では2回出題されています(2019年度〜2021年度)。
おんくとうぇあくのちがい
ON句とWHERE句の違いの意味
外部結合では、条件をON句に書くか WHERE句に書くかで結果が変わる。ON句の条件は結合相手を選ぶ段階で評価され、一致しない行はNULL補完されて残る。WHERE句は結合後の結果に対する選択なので、NULL補完された行が条件で除去される。
ON句とWHERE句の違いの具体例
顧客に受注を左外部結合し「受注日が今月」を ON句に書けば、今月受注のない顧客も受注列がNULLの行として残る。同じ条件を WHERE句に書くと NULL は比較が偽になるため、その顧客は結果から消え、内部結合と同じ結果になる。
ON句とWHERE句の違いは試験でどう引っ掛けられる?
内部結合ではON句とWHERE句のどちらに書いても結果が同じなので、その感覚のまま外部結合に持ち込むと件数が合わなくなる。「外部結合したのに件数が増えない」ときは、まずWHERE句に相手表の条件が無いかを疑う。
ON句とWHERE句の違いと関連する用語
ON句とWHERE句の違いが出た過去問
“社員取得資格”表に対し、SQL文を実行して結果を得た。SQL文のaに入れる字句はどれか。 〔社員取得資格〕 社員コード, 資格 S001, FE S001, …
正解:ON C1.社員コード = C2.社員コード AND C1.資格 = 'FE' AND C2.資格 = 'AP' WHERE C1.資格 = 'FE'
要点:外部結合の右側条件はON句、左側の絞り込みはWHERE句に置く
結果には基本情報の資格を持つ社員だけが並び、応用情報を持たない社員は資格2がNULLになっている。左外部結合で残す側の絞り込み(基本情報を持つ行)はWHERE句で行い、応用情報の有無による突合せはON句に置くことで、対応が無い場合もNULLで残せる。
出典:令和1年度 春期 データベーススペシャリスト試験 am2 問11(IPA)"社員取得資格"表に対し、SQL文を実行して結果を得た。SQL文のaに入れる字句はどれか。 社員取得資格(社員コード,資格): S001,FE / S001,A…
正解:ON C1.社員コード = C2.社員コード AND C1.資格 = 'FE' AND C2.資格 = 'AP' WHERE C1.資格 = 'FE'
要点:外部結合の絞り込みはON句へ。WHERE句だと内部結合化する
同じ表を左外部結合し、左側にFEの行、右側に同じ社員のAPの行を対応付ける形にすればよい。結合条件をON句に書けば対応しない行も左側は残り、右側はNULLになる。そのうえでWHERE句で左側をFEの行に限定すれば、FE保有者ごとにAPの有無を並べた結果が得られる。よってアが正しい。
出典:令和3年度 秋期 データベーススペシャリスト試験 am2 問8(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。