戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

応用情報技術者 2014年 春期 午前228


問題文

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

選択肢

(正解)

“東京在庫”表と“大阪在庫”表に対するSQL文の結果【午前2 解説】

要点まとめ

  • 結論:
    UNION ALL
    は両テーブルの全行を重複を排除せずに結合し、重複行もすべて表示されます。
  • 根拠:
    UNION ALL
    は単純に結果セットを連結し、重複削除を行わないため、同じ商品コードが複数回現れることがあります。
  • 差がつくポイント:
    UNION
    UNION ALL
    の違いを正確に理解し、重複行の扱いを見極めることが重要です。

正解の理由

今回のSQL文は
SELECT 商品コード、在庫数 FROM 東京在庫  
UNION ALL  
SELECT 商品コード、在庫数 FROM 大阪在庫
です。
UNION ALL
は両方のテーブルの全行をそのまま結合します。
東京在庫の3行と大阪在庫の3行、計6行がすべて結果に含まれ、重複する商品コードや在庫数も区別されて表示されます。
したがって、商品コード「B002」や「C003」がそれぞれ2回ずつ現れる選択肢エが正解です。

よくある誤解

  • UNION
    UNION ALL
    の違いを混同し、重複行が消えると思い込むことがあります。
  • 在庫数を合算するSQL文と誤解し、合計値を求める選択肢を選ぶ誤りが多いです。

解法ステップ

  1. SQL文のキーワードを確認し、
    UNION ALL
    であることを把握する。
  2. UNION ALL
    は重複を排除せずに全行を結合することを理解する。
  3. 東京在庫と大阪在庫の全行を単純に縦に連結した結果をイメージする。
  4. 重複する商品コードが複数回出現することを確認する。
  5. 選択肢の表と照合し、6行で重複行も含むものを選ぶ。

選択肢別の誤答解説

  • ア:大阪在庫の「C003」が抜けており、行数も4行で不足しています。
  • イ:在庫数を合算した結果であり、
    UNION ALL
    の動作とは異なります。
  • ウ:大阪在庫の「C003」が1回しかなく、6行に満たないため誤りです。
  • :東京・大阪両方の全行6行が重複も含めて正しく表示されているため正解です。

補足コラム

UNION
UNION ALL
はSQLでよく使われる集合演算子です。
  • UNION
    は重複行を排除し、結果セットを一意にします。
  • UNION ALL
    は重複を排除せず、すべての行を結合します。
    在庫管理やデータ集計の際にどちらを使うかで結果が大きく変わるため、正確な理解が必要です。

FAQ

Q:
UNION
UNION ALL
の違いは何ですか?
A:
UNION
は重複行を削除して結果を返し、
UNION ALL
は重複を含めてすべての行を返します。
Q: 在庫数を合算したい場合はどうすればよいですか?
A:
GROUP BY 商品コード
SUM(在庫数)
を使った集計クエリを作成する必要があります。

関連キーワード: UNION ALL, SQL結合、重複行、在庫管理、集合演算子
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について