SQLのIN句と同等の条件式

IN句は、指定した候補のいずれかに一致する行を抽出します。したがって、仕入先IDが'M002'または'M004'というOR条件に書き換えられ、正答はウです。 条件の書換え: 仕入先ID IN ('M002', 'M004') は、仕入先ID = 'M002' OR 仕入先ID = 'M004' と同じです。商品表では、食器洗い機、コーヒーメーカー、ホットプレートの3行が抽出されます。 商品 仕入先ID IN ('M002','M004') BETWEEN 'M002' AND 'M004' 冷蔵庫 M001 食器洗い機 M002 ○ ○ 電子レンジ M003 ○(含まれてしまう) 炊飯器 M003 ○(含まれてしまう) コーヒーメーカー M004 ○ ○ ホットプレート M004 ○ ○ ア: 一つの行の仕入先IDが同時に'M002'かつ'M004'になることはないため、AND条件では該当行がありません。 イ: INTERSECTは二つの検索結果の共通部分を求めます。M002の行とM004の行は同じ行にはならないため、共通部分は空です。 ウ:正解。 候補のどちらか一方に一致すればよいOR条件であり、IN句と同じ3行が得られます。 エ: BETWEEN 'M002' AND 'M004'は両端を含む範囲条件です。M003も範囲に入るため、M002とM004だけを指定するIN句とは結果が異なります。

“商品”表に対するSQL文と同じ結果が得られる SELECT文はどれか。

商品

商品ID

商品名称

仕入先 ID

単価

S001

冷蔵庫

M001

155,000

S002

食器洗い機

M002

85,000

S003

電子レンジ

M003

78,000

S004

炊飯器

M003

32,000

S005

コーヒーメーカー

M004

15,000

S006

ホットプレート

M004

12,000

[SQL文]
SELECT * FROM 商品 WHERE 仕入先 ID IN ('M002', 'M004')

出典令和7年度 基本情報技術者試験 科目A 問6
ア
SELECT * FROM 商品 WHERE 仕入先 ID='M002' AND 仕入先 ID='M004'
イ
SELECT * FROM 商品 WHERE 仕入先 ID='M002' INTERSECT SELECT * FROM 商品 WHERE 仕入先 ID='M004'
ウ
SELECT * FROM 商品 WHERE 仕入先 ID='M002' OR 仕入先 ID='M004'
エ
SELECT * FROM 商品 WHERE 仕入先 ID BETWEEN 'M002' AND 'M004'