次のSQL文と同じ検索結果が得られるSQL文はどれか。
SELECT DISTINCT TBL1.COL1 FROM TBL1
WHERE COL1 IN ( SELECT COL1 FROM TBL2 )
ア | SELECT DISTINCT TBL1.COL1 FROM TBL1 UNION SELECT TBL2.COL1 FROM TBL2 |
イ | SELECT DISTINCT TBL1.COL1 FROM TBL1 WHERE EXISTS ( SELECT * FROM TBL2 WHERE TBL1.COL1 = TBL2.COL1 ) |
ウ | SELECT DISTINCT TBL1.COL1 FROM TBL1 WHERE TBL1.COL1 = TBL2.COL1 AND TBL1.COL2 = TBL2.COL2 |
エ | SELECT DISTINCT TBL1.COL1 FROM TBL1 LEFT OUTER JOIN TBL2 ON TBL1.COL1 = TBL2.COL1 |
答え イ
【解説】
元のSQL文
SELECT DISTINCT TBL1.COL1 FROM TBL1
WHERE COL1 IN ( SELECT COL1 FROM TBL2 )
は、TBL2のCOL1と一致するTBL1のCOL1を重複を除いて出力するという意味で、これと同じSQL文はイの
SELECT DISTINCT TBL1.COL1 FROM TBL1
WHERE EXISTS
( SELECT * FROM TBL2 WHERE TBL1.COL1 = TBL2.COL1 )
になります。
【キーワード】
・SQL文