ITの基礎知識|ITパスポート・基本情報

基本情報技術者 令和7年公開問題 科目A 問6

2026.05.26

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

〔SQL 文〕

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

  • ア 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’

Show answer

正解: ウ

解説:

まず,元の SQL 文が返す結果を確認します。`IN (‘M002’, ‘M004’)` は「仕入先IDがM002またはM004である行」を取得します。結果は S002(食器洗い機),S005(コーヒーメーカー),S006(ホットプレート)の3行です。

各選択肢を検討します。

  • ア:`AND` を使うと「仕入先IDがM002 かつ M004」という条件になります。1つの列が同時に2つの値を持つことは不可能なので,結果は常に空になります。
  • イ:`INTERSECT` は2つの SELECT 結果の「積集合(共通部分)」を返します。M002の行とM004の行に共通するものはないので,結果は空になります。
  • ウ:`OR` を使うと「仕入先IDがM002 または M004」という条件になり,`IN (‘M002’, ‘M004’)` と全く同じ結果が得られます。正解です。
  • エ:`BETWEEN ‘M002’ AND ‘M004’` は文字列の範囲比較で「M002以上M004以下」を意味します。この場合,M002,M003,M004の行がすべて含まれてしまうため,M003の行(電子レンジ,炊飯器)も抽出されてしまい,元のSQL文と結果が異なります。