令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ試験 問10

過去問 午前Ⅱ試験過去問
アラフィフオヤジ
アラフィフオヤジ

令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ試験 問10を解いてみましょう。

テクノロジ系 >> データベース >> データ操作

問題

表Aと表Bから、どちらか一方にだけ含まれるIDを得るSQL文のaに入れる字句はどれか。

A

ID
100
200
300
400

B

ID
200
400
600
800

〔SQL文〕
SELECT COALESCE(A.ID, B.ID)
  FROM A   a   B ON A.ID = B.ID
  WHERE A.ID IS NULL OR B.ID IS NULL

ア FULL OUTER JOIN

イ INNER JOIN

ウ LEFT OUTER JOIN

エ RIGHT OUTER JOIN

解説

アラフィフオヤジ
アラフィフオヤジ

このSQL文は、表Aと表Bのどちらか一方にだけ含まれるIDを取得するためのものです。そのため、適切な結合方法はア FULL OUTER JOINです。これは、両方のテーブルのすべてのレコードを返し、一方のテーブルにしか存在しないレコードの場合、他方のテーブルの列はNULLになります。したがって、WHERE句の A.ID IS NULL OR B.ID IS NULL は、一方のテーブルにしか存在しないレコードをフィルタリングします。したがって、このクエリは、表Aまたは表Bのどちらか一方にだけ存在するIDを返します。他のJOIN方法(INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN)はこの目的には適していません。INNER JOINは両方のテーブルに存在するレコードのみを返し、LEFT OUTER JOINとRIGHT OUTER JOINは一方のテーブルに存在するすべてのレコードと他方のテーブルにマッチするレコードを返します。これらは、一方のテーブルにしか存在しないレコードを取得するためには使用できません。したがって、正解は「」です。