データベーススペシャリスト試験 令和5年度 秋期 午前II 問10
表Aと表Bから、どちらか一方にだけ含まれるIDを得るSQL文のaに入れる字句はどれか。
〔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は、両方の表の一致行に加え、Aだけにある行とBだけにある行も全て残す外部結合です。画像の値で結合結果を追うと、A.IDとB.IDの組は(100、NULL)、(200、200)、(300、NULL)、(400、400)、(NULL、600)、(NULL、800)となります。WHERE句によって片方がNULLである行だけを残すので、一致する200と400は除外されます。さらにCOALESCEは左から最初のNULLでない値を返すため、最終結果は100、300、600、800です。これは二つの集合のどちらか一方だけに属するIDです。
イのINNER JOINは誤りです。内部結合は両方にある200と400だけを残します。これらはA.ID、B.IDのどちらもNULLではないので、後続のWHERE条件によって全て除外され、目的の結果を得られません。
ウのLEFT OUTER JOINは誤りです。Aの全行は残せるので、Aだけにある100と300は取得できます。しかしBだけにある600と800は結合結果に現れません。これは左側の表を基準にした外部結合です。
エのRIGHT OUTER JOINは誤りです。Bの全行は残せるので、Bだけにある600と800は取得できます。しかしAだけにある100と300は現れません。これは右側の表を基準にした外部結合です。
【ポイント】 ・FULL OUTER JOINと片側のNULL判定を組み合わせると、集合の対称差を求められます。 ・COALESCEは複数の値から最初の非NULL値を取り出す関数です。
出典:令和5年度 秋期 データベーススペシャリスト試験 午前II 問10
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の25問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる