令和5年度 秋期 データベーススペシャリスト試験 午前II 問10
テクノロジデータベース
この問題は2023(R5)秋 データベーススペシャリスト 午前IIに出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。
本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。
表Aと表Bから,どちらか一方にだけ含まれるIDを得るSQL文の a に入れる字句はどれか。

図の説明テキスト
表Aと表Bの2つの表が横に並んでいる。
表A:
| ID |
|---|
| 100 |
| 200 |
| 300 |
| 400 |
表B:
| ID |
|---|
| 200 |
| 400 |
| 600 |
| 800 |

図の説明テキスト
〔SQL 文〕
SELECT COALESCE(A.ID, B.ID)
FROM A <span id="q10_blank_a" class="blank-label">a</span> B ON A.ID = B.ID
WHERE A.ID IS NULL OR B.ID IS NULL
解答・解説を読む
正解: 選択肢ア
表Aと表Bから、「どちらか一方にだけ含まれるID」を得るためには、両方の表のすべてのデータを対象としつつ、結合条件に一致しないデータも抽出できる結合方法を用いる必要があります。これを実現するのが FULL OUTER JOIN(完全外部結合) です。
FULL OUTER JOINを使用すると、表Aにのみ存在する行と表Bにのみ存在する行の両方が抽出され、相手の表に存在しない列の値は NULL となります。その後、WHERE 句などで NULL となっている行を抽出することで、どちらか一方にだけ含まれるIDを得ることができます。
各選択肢の解説
- ア: FULL OUTER JOIN
正解です。左右両方の表のすべての行を抽出し、一致しない行はNULLで補完するため、両方の表において片方にしか存在しないデータを取得する目的に合致します。 - イ: INNER JOIN
内部結合です。両方の表に 共通して存在する(一致する) データのみを抽出するため、どちらか一方にだけ含まれるデータは取得できません。 - ウ: LEFT OUTER JOIN
左外部結合です。左側の表(表A)のすべての行と、右側の表(表B)で結合条件に一致する行を抽出します。表Bにのみ存在するデータは取得できません。 - エ: RIGHT OUTER JOIN
右外部結合です。右側の表(表B)のすべての行と、左側の表(表A)で結合条件に一致する行を抽出します。表Aにのみ存在するデータは取得できません。