令和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は一方のテーブルに存在するすべてのレコードと他方のテーブルにマッチするレコードを返します。これらは、一方のテーブルにしか存在しないレコードを取得するためには使用できません。したがって、正解は「ア」です。