“商品”表に対するSQL文と同じ結果が得られるSELECT文はどれか。 〔SQL文〕 SELECT * FROM 商品 WHERE 仕入先ID IN ('M002', 'M004')
IN述語は複数の等価比較をORで結んだのと同じ
商品
| 商品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 |
選択肢
- ア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'
正解と解説
正解:ウ SELECT * FROM 商品 WHERE 仕入先ID = 'M002' OR 仕入先ID = 'M004'
IN述語は、列の値が列挙した値のいずれかに一致する行を選ぶ述語である。これは各値との等価比較をORで結んだ条件と同じ意味になる。ANDでは同じ列が同時に二つの値をとることはあり得ず、結果は常に空になる。
選択肢ごとの解説
- ア同一列が同時に二つの値をとることはないので、結果は常に0行になる。
- イINTERSECTは両方に含まれる行だけを残すため、やはり結果が空になる。
- ウ各値との比較をORで結んだ形であり、IN述語と同じ結果になる。
- エBETWEENは範囲指定なので、間にあるM003の行まで含まれてしまう。
同じ分野の他の問題
- 次のSQL文によって定義され,値が格納されている"商品"表に対して,制約違反で実行エラーとなるSQL文はどれか。 〔SQ…2026年度 公開問題 科目A 問7
- “得点”表から、学生ごとに全科目の点数の平均を算出し、平均が80点以上の学生の学生番号とその平均点を求める。aに入れる適…2019年度 秋期 午前 問26
- "学生"表と"学部"表に対して次のSQL文を実行した結果として、正しいものはどれか。 〔SQL文〕 SELECT 氏名 …2019年度 春期 午前 問29
- "中間テスト"表からクラスごと、教科ごとの平均点を求め、クラス名、教科名の昇順に表示するSQL文中のaに入れる字句はどれ…2019年度 春期 午前 問27
- 次の埋込みSQLを用いたプログラムの一部において、Xは何を表す名前か。 EXEC SQL OPEN X; EXEC SQ…2018年度 春期 午前 問28
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。