過去問解きまくり研究所 ホーム

令和5年度 秋期 午前Ⅱ 問10

データ操作

COALESCEに関する問題

表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

解説

FULL OUTER JOIN で両方の行を残し、片側だけの ID を得ます。

WHERE 句は、A.ID と B.ID のどちらかが NULL の行だけを残します。結合で相手が見つからなかった行は相手側の列が NULL になるので、一方の表にしかない ID を拾うには、両方の表の行をすべて残す結合が必要です。FULL OUTER JOIN で A と B を ID で結合すると、200 と 400 は両方に値がそろい、100 と 300 は B 側が NULL、600 と 800 は A 側が NULL になります。WHERE で両方そろった行を除くと4行が残り、COALESCE が NULL でない側の ID を返すので、結果は 100、300、600、800 です。見分ける軸は、相手のない行をどちら側について残すかです。両側とも残すのは完全外部結合と覚えておきましょう。

ほかの選択肢はなぜ違うのか

この問題の用語

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

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)