過去問解きまくり研究所 ホーム

令和4年度 秋期 午前Ⅱ 問8

データ操作

NOT EXISTSに関する問題

“社員”表に対して,SQL 文を実行して得られる結果はどれか。ここで,実線の下線は主キーを表し,表中の NULL は値が存在しないことを表す。

社員

社員コード上司社員名
S001NULLA
S002S001B
S003S001C
S004S003D
S005NULLE
S006S005F
S007S006G
〔SQL 文〕
SELECT 社員コード FROM 社員 X
   WHERE NOT EXISTS
      (SELECT * FROM 社員 Y WHERE X.社員コード = Y.上司)

選択肢は原典では列名“社員コード”の結果表。各肢は結果の行を上から順に並べた。

答えと解説を見る

✓ これが正解ウ社員コード:S002,S004,S007

解説

誰の上司にもなっていない社員 S002、S004、S007 の3行です。

副問合せは、外側の社員 X ごとに、その社員コードを上司の列に持つ社員 Y がいるかを調べます。NOT EXISTS なので、そのような Y が一人もいない社員、つまり誰の上司にもなっていない社員が残ります。上司の列に現れる値は S001、S003、S005、S006 です。全社員の S001〜S007 からこれらを除くと、S002、S004、S007 の3行になります。上司の列の NULL は、どの社員コードとも一致しないので結果に影響しません。外側の行を一つ固定して、副問合せに一致する行があるかを確かめる、という相関副問合せの読み方を順に当てはめると、結果を確実に求められます。

ほかの選択肢はなぜ違うのか

出典:令和4年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問8

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)