"名簿1"表と"名簿2"表のそれぞれ対応する行が全て等しいかどうかを確認するSQL文のa, b, cに入れる適切な字句はどれか。 〔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
表の一致判定は対称差(和−共通)が空かで確かめる
名簿1:
名簿2:
| 名前 | 住所 | 性別 | 年齢 |
|---|---|---|---|
| 試験 太郎 | 東京 | 男 | 22 |
| 情報 花子 | 大阪 | 女 | 24 |
| 処理 一郎 | 京都 | 男 | 35 |
| 名前 | 住所 | 性別 | 年齢 |
|---|---|---|---|
| 試験 太郎 | 東京 | 男 | 22 |
| 情報 花子 | 大阪 | 女 | 24 |
| 処理 一郎 | 京都 | 男 | 35 |
選択肢
- アa: EXCEPT / b: UNION ALL / c: INTERSECT
- イa: EXCEPT / b: UNION / c: INTERSECT
- ウa: UNION ALL / b: INTERSECT / c: UNION
- エa: UNION / b: EXCEPT / c: INTERSECT
正解と解説
正解:エ a: UNION / b: EXCEPT / c: INTERSECT
2つの表が完全に一致するかは、互いの差集合を両方向で取り、どちらも空であることを確かめればよい。この設問の枠組みでは、和集合から共通部分を差し引いた対称差を作り、その件数が0かどうかで判定する。どちらか一方にしかない行があれば対称差に残るため、件数が0でなくなる。
選択肢ごとの解説
- ア差集合と積集合を重複ありの和でつないでおり、一致判定として意味をなさない。
- イ同様に組合せが成り立たず、両方向の差を過不足なく取れていない。
- ウ重複ありの和と積・和の組合せでは、片方だけにある行を抽出できない。
- エ正しい。和集合から共通部分を差し引いた対称差が空かどうかで判定できる。
同じ分野の他の問題
- 図のツリー構造に対するデータを格納した"隣接リスト"表から、リーフノードを取得するSQL文のaに入れる字句はどれか。ここ…2024年度 秋期 午前II 問8
- SQL文1とSQL文2を実行した結果が同一になるために、表Rが満たすべき必要十分な条件はどれか。 〔SQL文1〕 SEL…2022年度 秋期 午前II 問9
- "商品"表と"当月商品仕入合計"表に対して、SQL文を実行した結果はどれか。 商品(商品コード,仕入先コード): S00…2021年度 秋期 午前II 問6
- SQLの3値論理において、a, bに入る字句の組合せはどれか。 "真 AND 不定"は[ a ]であり、"偽 AND 不…2025年度 秋期 午前II 問7
- "従業員"表から、男女それぞれの最年長従業員を除く全ての従業員を取り出すSQL文とするために、aに入れる字句はどれか。こ…2024年度 秋期 午前II 問10
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。