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

令和2年度 10月 午前 問29

データベース

UNION ALLに関する問題

"東京在庫" 表と "大阪在庫" 表に対して,SQL 文を実行して得られる結果はどれか。ここで,実線の下線は主キーを表す。

〔東京在庫〕

〔大阪在庫〕

〔SQL 文〕

SELECT 商品コード,在庫数 FROM 東京在庫
   UNION ALL
SELECT 商品コード,在庫数 FROM 大阪在庫
答えと解説を見る

✓ これが正解エA001/50,B002/25,B002/15,C003/35,C003/35,D004/80(6 行・全行を残す)

解説

重複除去せず両方の表を縦につないだ6行が結果です。

この設問は、二つの表の同じ形の結果を縦に並べる SQL の働きを問うています。ですから、選び方の軸は、そのつなぎ方が重複を落とすものか、それとも残すものかという一点だけです。今回書かれている UNION ALL は、重複を落とす動きが付いていない側に当たります。したがって、二つの表の行がそっくり同じであっても、そのまま二行として並びに残ります。集計を掛けているわけでもないので、同じ商品コードの在庫数を足し合わせる動きも、書かれた通りには起きません。二つの表の中身をそのまま順につないだ、行数の合計に等しい結果が得られます。同じコードで在庫が別々に立っていても、それを一行にまとめる仕事はこの書き方の役目ではないという点を、素直に読み取れれば選び分けられます。

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

出典:令和2年度 10月 応用情報技術者試験 午前 問29

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