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

データベーススペシャリスト 2016年 午前209


問題文

次のSQL文と同じ検索結果が得られるSQL文はどれか。  
SELECT DISTINCT TBL1.COL1 FROM TBL1
    WHERE COL1 IN (SELECT COL1 FROM TBL2)

選択肢

SELECT DISTINCT TBL1.COL1 FROM TBL1
    UNION SELECT TBL2.COL1 FROM TBL2
SELECT DISTINCT TBL1.COL1 FROM TBL1
    WHERE EXISTS
    (SELECT * FROM TBL2 WHERE TBL1.COL1 = TBL2.COL1)
(正解)
SELECT DISTINCT TBL1.COL1 FROM TBL1, TBL2
    WHERE TBL1.COL1 = TBL2.COL1
    AND TBL1.COL2 = TBL2.COL2
SELECT DISTINCT TBL1.COL1 FROM TBL1 LEFT OUTER JOIN TBL2
    ON TBL1.COL1 = TBL2.COL1

次のSQL文と同じ検索結果が得られるSQL文はどれか。【午前2 解説】

要点まとめ

  • 結論:元のSQL文は「TBL1のCOL1がTBL2のCOL1に存在する行を抽出」しており、イのSQL文が同じ結果を返します
  • 根拠:元SQLは
    WHERE COL1 IN (SELECT COL1 FROM TBL2)
    で存在確認を行い、イは
    WHERE EXISTS
    で同様の存在チェックを実施しています。
  • 差がつくポイント:
    IN
    EXISTS
    の違いを理解し、
    UNION
    JOIN
    の意味を正確に把握することが重要です。

正解の理由

元のSQL文はTBL1のCOL1の値がTBL2のCOL1に存在するかどうかを
IN
句で判定し、重複を除いて抽出しています。
イのSQL文は
EXISTS
句を使い、TBL2にTBL1のCOL1と一致する行が存在するかをチェックしています。
EXISTS
は条件に合う行があれば真となるため、元の
IN
句と同じ意味を持ちます。
また、両者とも
DISTINCT
で重複排除しているため、結果は完全に一致します。

よくある誤解

UNION
は2つのテーブルの値を結合する操作であり、元の
IN
句の存在チェックとは異なります。
JOIN
は結合条件により行を増やす可能性があり、単純な存在チェックとは意味が違います。

解法ステップ

  1. 元SQL文の意味を理解する:「TBL1.COL1がTBL2.COL1に存在する行を抽出」
  2. IN
    句の役割を確認:サブクエリの結果に含まれるかどうかの存在確認
  3. 選択肢のSQL文の動作を一つずつ検証
  4. EXISTS
    句は存在確認に使われ、
    IN
    句と同等の結果を返すことを知る
  5. UNION
    JOIN
    は結果の意味が異なるため除外
  6. よってイが正解と判断する

選択肢別の誤答解説

  • ア:
    UNION
    はTBL1とTBL2のCOL1の値を結合し、重複を除いた結果を返すため、元SQLの「TBL1の値がTBL2に存在する」条件とは異なります。
  • イ:
    EXISTS
    句でTBL2にTBL1.COL1と一致する行が存在するかを判定し、元SQLと同じ結果を返します。
  • ウ:
    TBL1
    TBL2
    を結合し、さらに
    COL2
    の一致も条件にしているため、元SQLより条件が厳しくなり結果が異なります。
  • エ:
    LEFT OUTER JOIN
    はTBL1の全行を返し、TBL2に一致する行がなくてもNULLで返すため、元SQLの存在チェックとは異なります。

補足コラム

  • IN
    句はサブクエリの結果に値が含まれるかを判定し、
    EXISTS
    句はサブクエリの行の存在を判定します。
  • パフォーマンス面では、
    EXISTS
    の方が効率的な場合もありますが、結果は同じです。
  • JOIN
    はテーブルを結合して行を増やす操作であり、単純な存在チェックとは用途が異なります。

FAQ

Q:
IN
句と
EXISTS
句はどちらを使うべきですか?
A: 結果は同じですが、データ量やインデックスの有無によってパフォーマンスが変わるため、状況に応じて使い分けます。
Q:
UNION
はどんな時に使いますか?
A: 複数のSELECT文の結果を結合し、重複を除いて一つの結果セットにまとめたい時に使います。

関連キーワード: SQL, サブクエリ、EXISTS句、IN句、JOIN, UNION, DISTINCT, データベース検索
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

データベーススペシャリスト
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

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

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