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

令和7年度 秋期 午前Ⅱ 問9

データ操作

“名簿1”表と“名簿2”表のそれぞれ対応する行が全て等しいかどうかを確認するSQL文のa,b,cに入れる適切な字句はどれか。

名簿1

名前住所性別年齢
試験 太郎東京男22
情報 花子大阪女24
処理 一郎京都男35

名簿2

名前住所性別年齢
試験 太郎東京男22
情報 花子大阪女24
処理 一郎京都男35

〔SQL文〕

SELECT CASE WHEN COUNT(*) = 0 THEN '等しい' ELSE '異なる' END AS 結果
    FROM ((SELECT * FROM 名簿1 [ a ] SELECT * FROM 名簿2)
         [ b ]
         (SELECT * FROM 名簿1 [ c ] SELECT * FROM 名簿2)
    ) COMPARE

選択肢は原典ではa・b・cの表。

答えと解説を見る

✓ これが正解エa:UNION / b:EXCEPT / c:INTERSECT

解説

和集合から共通部分を引いて行が残らなければ、二つの表は等しいと判定できます。

二つの表が等しいかを調べるには、どちらか一方にしかない行があるかを数えます。名簿1と名簿2の和集合(UNION)から、両方にある行の集合(INTERSECT)を差し引く(EXCEPT)と、一方にだけある行が残ります。この件数が0なら等しく、1件以上あれば異なると判定できます。問の表では、和集合は3行、共通部分も3行で、差は0行なので、結果は等しいになります。見分ける軸は、二つの表が等しいときに件数が0になる組合せかどうかです。各選択肢について、問の等しい表を当てはめて件数を数えると、0になるのは和集合から共通部分を引く組合せだけです。

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

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

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