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

データベーススペシャリスト 2023年 午前210


問題文

表Aと表Bから、どちらか一方にだけ含まれるIDを得るSQL文のaに入れる字句はどれか。
データベーススペシャリスト 2023年 午前2 問10の問題画像

選択肢

FULL OUTER JOIN(正解)
INNER JOIN
LEFT OUTER JOIN
RIGHT OUTER JOIN

表Aと表Bから、どちらか一方にだけ含まれるIDを得るSQL文のaに入れる字句はどれか【午前2 解説】

正解の理由

正解はア: FULL OUTER JOINです。
このSQL文は「A.ID IS NULL OR B.ID IS NULL」という条件で、どちらか一方にしか存在しないIDを抽出しています。
FULL OUTER JOINはAとBの両方のテーブルの全行を結合し、片方にしかない行はもう片方の列がNULLになります。
そのため、WHERE句の条件でNULLを検出し、片方にだけ存在するIDを正しく取得できます。

解法ステップ

  1. 問題文のSQL文を確認し、JOINの種類を問われていることを理解する。
  2. WHERE句の「A.ID IS NULL OR B.ID IS NULL」が示す意味を考える。
  3. NULLが発生するのは、結合相手が存在しない場合であることを理解する。
  4. どちらか一方にだけ存在するIDを抽出するには、両テーブルの全行を結合する必要があると判断する。
  5. FULL OUTER JOINが両テーブルの全行を結合し、片方にしかない行はNULLになることを思い出す。
  6. よって、空欄に入るのはFULL OUTER JOINであると結論づける。

選択肢別の誤答解説

  • ア: FULL OUTER JOIN
    → 正解。両テーブルの全行を結合し、片方にしかないIDをNULLで表現できる。
  • イ: INNER JOIN
    → 誤り。両方に存在するIDのみを取得し、片方だけのIDは除外される。
  • ウ: LEFT OUTER JOIN
    → 誤り。左テーブルAの全行を取得するが、右テーブルBに存在しないIDだけを抽出するには不十分。
  • エ: RIGHT OUTER JOIN
    → 誤り。右テーブルBの全行を取得するが、左テーブルAに存在しないIDだけを抽出するには不十分。

よくある誤解

INNER JOINは共通するIDだけを取得するため、片方にだけあるIDは抽出できません。
LEFT/RIGHT OUTER JOINは片側の全行を取得しますが、もう片側に存在しない行だけを抽出するには不十分です。

補足コラム

FULL OUTER JOINはSQL標準で定義されている結合方法で、両テーブルの全行を結合し、片方に存在しない行はNULLで埋められます。
ただし、MySQLなど一部のDBMSではFULL OUTER JOINをサポートしていないため、UNIONやLEFT/RIGHT JOINの組み合わせで代用することがあります。

FAQ

Q: FULL OUTER JOINとINNER JOINの違いは何ですか?
A: INNER JOINは両テーブルに共通する行だけを結合しますが、FULL OUTER JOINは両方のテーブルの全行を結合し、片方にしかない行はNULLで埋めます。
Q: LEFT OUTER JOINで片方にだけ存在するIDを取得できますか?
A: LEFT OUTER JOINは左テーブルの全行を取得しますが、右テーブルに存在しない行だけを抽出するにはWHERE句でNULL判定が必要で、右テーブルにだけ存在するIDは取得できません。

関連キーワード: FULL OUTER JOIN, SQL結合、NULL判定、外部結合、差集合
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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