応用情報技術者 2014年 春期 午前2 問28
問題文
“東京在庫”表と“大阪在庫”表に対して、SQL文を実行して得られる結果はどれか。ここで、実線の下線は主キーを表す。


選択肢
ア:
イ:
ウ:
エ:(正解)
“東京在庫”表と“大阪在庫”表に対するSQL文の結果【午前2 解説】
要点まとめ
- 結論:
UNION ALL
は両テーブルの全行を重複を排除せずに結合し、重複行もすべて表示されます。 - 根拠:
UNION ALL
は単純に結果セットを連結し、重複削除を行わないため、同じ商品コードが複数回現れることがあります。 - 差がつくポイント:
UNION
とUNION ALL
の違いを正確に理解し、重複行の扱いを見極めることが重要です。
正解の理由
今回のSQL文は
SELECT 商品コード、在庫数 FROM 東京在庫 UNION ALL SELECT 商品コード、在庫数 FROM 大阪在庫
です。
東京在庫の3行と大阪在庫の3行、計6行がすべて結果に含まれ、重複する商品コードや在庫数も区別されて表示されます。
したがって、商品コード「B002」や「C003」がそれぞれ2回ずつ現れる選択肢エが正解です。
UNION ALLは両方のテーブルの全行をそのまま結合します。
東京在庫の3行と大阪在庫の3行、計6行がすべて結果に含まれ、重複する商品コードや在庫数も区別されて表示されます。
したがって、商品コード「B002」や「C003」がそれぞれ2回ずつ現れる選択肢エが正解です。
よくある誤解
UNION
とUNION ALL
の違いを混同し、重複行が消えると思い込むことがあります。- 在庫数を合算するSQL文と誤解し、合計値を求める選択肢を選ぶ誤りが多いです。
解法ステップ
- SQL文のキーワードを確認し、
UNION ALL
であることを把握する。 UNION ALL
は重複を排除せずに全行を結合することを理解する。- 東京在庫と大阪在庫の全行を単純に縦に連結した結果をイメージする。
- 重複する商品コードが複数回出現することを確認する。
- 選択肢の表と照合し、6行で重複行も含むものを選ぶ。
選択肢別の誤答解説
- ア:大阪在庫の「C003」が抜けており、行数も4行で不足しています。
- イ:在庫数を合算した結果であり、
UNION ALL
の動作とは異なります。 - ウ:大阪在庫の「C003」が1回しかなく、6行に満たないため誤りです。
- エ:東京・大阪両方の全行6行が重複も含めて正しく表示されているため正解です。
補足コラム
UNIONと
UNION ALLはSQLでよく使われる集合演算子です。
UNION
は重複行を排除し、結果セットを一意にします。UNION ALL
は重複を排除せず、すべての行を結合します。
在庫管理やデータ集計の際にどちらを使うかで結果が大きく変わるため、正確な理解が必要です。
FAQ
Q:
A:
UNIONと
UNION ALLの違いは何ですか?
A:
UNIONは重複行を削除して結果を返し、
UNION ALLは重複を含めてすべての行を返します。
Q: 在庫数を合算したい場合はどうすればよいですか?
A:
A:
GROUP BY 商品コードと
SUM(在庫数)を使った集計クエリを作成する必要があります。
関連キーワード: UNION ALL, SQL結合、重複行、在庫管理、集合演算子

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

