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

平成28年度 春期 午前Ⅱ 問9

データ操作

副問合せに関する問題

次のSQL文と同じ検索結果が得られるSQL文はどれか。

SELECT DISTINCT TBL1.COL1 FROM TBL1
       WHERE COL1 IN (SELECT COL1 FROM TBL2)
答えと解説を見る

✓ これが正解イSELECT DISTINCT TBL1.COL1 FROM TBL1 WHERE EXISTS (SELECT * FROM TBL2 WHERE TBL1.COL1 = TBL2.COL1)

解説

IN副問合せは、相関させたEXISTSで同じ結果に書き換えられます。

元のSQL文は、TBL1のCOL1の値のうち、TBL2のCOL1にも現れる値を重複なく取り出します。EXISTSを使った形では、TBL1の行ごとに、COL1の値が等しいTBL2の行が一つでもあるかを調べ、あればその行を残します。TBL2に同じ値があるかどうかを確かめている点は同じで、DISTINCTで重複も除かれるので、結果は一致します。INは値の一覧に含まれるかを調べ、EXISTSは条件に合う行があるかを調べる、と働きは違っても、相関の条件をCOL1の一致にすれば同じ意味になります。書き換えの問いでは、取り出す行が増えたり減ったりする条件が加わっていないかを確かめます。

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

出典:平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問9

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