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


表Aと表Bから、どちらか一方にだけ含まれるIDを得るSQL文のaに入れる字句はどれか。
問題画像
FULL OUTER JOIN(正解)
INNER JOIN
LEFT OUTER JOIN
RIGHT OUTER JOIN

解説

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

要点まとめ

  • 結論:どちらか一方にだけ含まれるIDを取得するには、両テーブルの全行を結合するFULL OUTER JOINが必要です。
  • 根拠:INNER JOINは両方に存在する共通のIDのみ、LEFT/RIGHT OUTER JOINは片側の全行ともう片側の一致行のみを取得します。
  • 差がつくポイント:NULL判定で片方に存在しない行を抽出するため、両テーブルの全行を網羅するFULL OUTER JOINを使うことが重要です。

正解の理由

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

よくある誤解

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

解法ステップ

  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だけを抽出するには不十分。

補足コラム

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判定, 外部結合, 差集合
← 前の問題へ次の問題へ →

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