基本情報技術者試験 - 令和7年公開問題 - 問6

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

商品
商品ID商品名称仕入先ID単価
S001冷蔵庫M001155,000
S002食器洗い機M00285,000
S003電子レンジM00378,000
S004炊飯器M00332,000
S005コーヒーメーカーM00415,000
S006ホットプレートM00412,000

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'
答え
分野 : テクノロジ系 › 技術要素 › データベース › データ操作
解説
SQL文の書き換えに関する問題です。元のSQL文は「仕入先IDがM002またはM004である商品を取得する」という条件をIN演算子で表しています。これと同じ結果を得るには,OR演算子を使って「仕入先ID=M002 OR 仕入先ID=M004」と書くことができ,正解は選択肢「ウ」です。

「ア」はANDで繋いでいるため,一つの行が同時にM002でもM004でもあることは有り得ず,結果が常に空になってしまいます。「イ」のINTERSECTは両方の条件を同時に満たす行の共通部分を求める演算であり,これもM002かつM004という条件になってしまうため,結果は空になります。「エ」のBETWEENはM002からM004までの範囲内の値をすべて含む条件になるため,M003なども含まれてしまい,元のSQL文とは異なる結果になります。IN演算子OR演算子の集合と同じ意味を持つという基本を押さえておくと解きやすい問題です。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる