SkillStack
テクノロジ系10 / 25問

データベーススペシャリスト試験 令和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

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

選択肢を押すと答え合わせができます。

正解と解説を見る

【正解】ア

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に質問できる
SkillStackで無料で始める