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

令和2年度 10月 午前Ⅱ 問8

データ操作

相関副問合せに関する問題

“社員”表に対して,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が残ります。

NOT EXISTSの副問合せは、外側の社員Xごとに、上司の列がXの社員コードと等しい行Yがあるかを調べます。そうした行が一つもないとき、つまりXが誰の上司にもなっていないときにXが残ります。表の上司の列に現れる値は、S001、S003、S005、S006の4つです。この4人は誰かの上司なので除かれ、残るのはS002、S004、S007です。外側の行を一つ固定して副問合せを評価する相関副問合せは、表を上から一行ずつ当てはめて確かめるのが確実です。

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

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

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