応用情報技術者試験 令和2年秋 午前問29 解説付き過去問
問題
"東京在庫"表と"大阪在庫"表に対して、SQL文を実行して得られる結果はどれか。
ここで、実線の下線は主キーを表す。


正解
解説
この問題は、"東京在庫"表と"大阪在庫"表に対してSQLを実行したときに得られる結果を問うものです。SQL文の動作と演算結果の理解が求められます。
- UNIONとUNION ALLの違い
UNIONは、2つのSELECT文で取得された結果を縦に連結し、重複する行を自動的に1行にまとめて返します。
一方、UNION ALLは重複を排除せず、すべての行をそのまま返します。つまり、両表に同じ内容の行が存在する場合でも、UNIONは1件、UNION ALLは2件として返します。 - 今回のSQL処理内容
問題の出力結果を見る限り、SQLは「UNION ALL」を使用していることが分かります。
これは、"東京在庫"と"大阪在庫"の内容をそのまま連結し、重複行である{商品ID=C003, 商品名=モニタ, 在庫数=35}も2件表示されていることから判断できます。
この処理により、両表の内容がそのまま並べられ、同じ商品が2店舗に存在する場合でも重複して記録されます。
したがって、SQL文の実行結果として正しいのは、両方の表のすべてのレコードをそのまま含み、重複行もそのまま保持した内容になります。