データベーススペシャリスト試験 令和2年度 秋期 午前II 問7
表Rと表Sに対し、SQL文を実行して結果を得るとき、aに入れる字句はどれか。ここで、結果のNULLは値が存在しないことを表す。
〔SQL文〕 SELECT 「a」(R.ID、S.ID) AS ID、名称1、名称2 FROM R FULL JOIN S ON R.ID = S.ID ORDER BY ID

選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】ア
COALESCEは、引数を左から順に調べ、最初に見つかったNULLでない値を返す関数です。FULL JOINでは、一方の表にしか存在しない行も結果に残るため、IDが1の行ではS.IDがNULLに、IDが4の行ではR.IDがNULLになります。COALESCE(R.ID、S.ID)とすれば、IDが1の行ではR.IDの1、IDが4の行ではS.IDの4が選ばれます。両表に存在するIDが2と3では、最初の引数であるR.IDが返されます。したがって、表示されるIDは順に1、2、3、4となります。
イのDISTINCTは誤りです。DISTINCTは、検索結果から重複する行を取り除くためにSELECT句などで指定する字句であり、二つの値からNULLでない方を選ぶ関数ではありません。
ウのNULLIFは誤りです。NULLIFは、二つの引数が等しければNULLを返し、異なれば第1引数を返す関数です。IDが2と3では両引数が等しいためNULLになり、目的の結果になりません。
エのUNIQUEは誤りです。UNIQUEは、主に列や列の組合せに重複値を許さない一意性制約を表す字句です。NULLを補完して一つの値を返す働きはありません。
【ポイント】 外部結合で生じたNULLを別の列の値で補うときは、COALESCEが有効です。COALESCEは引数を複数指定でき、全ての引数がNULLの場合にだけNULLを返します。
出典:令和2年度 秋期 データベーススペシャリスト試験 午前II 問7
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の25問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる