令和5年度 秋期 データベーススペシャリスト試験 午前II 問10
表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
解答・解説
正解: ア. FULL OUTER JOIN
表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にのみ存在するデータは取得できません。