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

令和7年度 春期 午前Ⅱ 問21

データベース

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 が残ります。

この SQL 文は、従業員表 X の各行について、副問合せが1行も返さないものだけを取り出します。副問合せは、従業員表 Y のうち、上司の列が X の従業員コードと等しい行を探します。つまり、X の従業員を上司に持つ部下がいるかを調べており、NOT EXISTS によって部下が1人もいない従業員が結果に残ります。上司の列に現れる値は S001、S003、S005、S006 の4つで、これらは誰かの上司です。NULL はどの従業員コードとも等しくならないので数に入りません。残る S002、S004、S007 が結果となり、これが正解です。主キーである従業員コードの一覧から、部下を持たない組織の末端の従業員を選ぶと考えると確かめやすくなります。

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

出典:令和7年度 春期 情報処理安全確保支援士試験 午前Ⅱ 問21

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