令和7年度 科目A 問6
データベース
SQLに関する問題
“商品”表に対する 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')- ア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 でつないだ条件と同じ結果になります。
IN 述語は、列の値が括弧内に並べたいずれかの値と一致する行を取り出す条件です。設問の SQL 文は、仕入先 ID が M002 か M004 のどちらかである行を選ぶので、結果は食器洗い機、コーヒーメーカー、ホットプレートの3行になります。いずれかと一致すればよいという意味は、それぞれの等号の条件を OR でつないだ形とまったく同じです。そのため、仕入先 ID='M002' OR 仕入先 ID='M004' とした SELECT 文で同じ3行が得られます。IN の括弧の中は OR で展開できる、と読み替えておくと、AND や BETWEEN を使った書き換えとの違いがすぐ判断できます。
ほかの選択肢はなぜ違うのか
- アSELECT * FROM 商品 WHE…:1つの行の仕入先 ID が M002 と M004 の両方に同時に等しくなることはありません。条件を AND で結ぶと、どの行も条件を満たさず、結果は0行になります。どちらか一方に一致すればよいという IN の意味とは合いません。
- イSELECT * FROM 商品 WHE…:INTERSECT は、2つの問合せ結果の両方に含まれる行だけを残す集合演算です。仕入先 ID が M002 の行と M004 の行に共通する行はないため、結果は0行となり、両方の行を合わせて取り出す設問の結果とは違います。
- エSELECT * FROM 商品 WHE…:BETWEEN は両端を含む範囲指定で、M002 から M004 までの値がすべて対象になります。仕入先 ID が M003 の電子レンジと炊飯器も含まれて5行となり、M002 と M004 だけを選ぶ設問の結果とは一致しません。
この問題の用語
- OR数学の手法を使って、いくつかの案から最も有利なものを選ぶ考え方です。期待される費用や利益を計算して比べるときに使います。
出典:令和7年度 基本情報技術者試験 科目A 問6
同じ用語が出る問題
- 令和6年度 科目A 問1:X□Yの真理値表(OR)
- 令和元年度 秋期 午前 問22:論理積に関する問題(OR)
- 平成31年度 春期 午前 問22(OR)
- 平成31年度 春期 午前 問2:論理積に関する問題(OR)
- 平成30年度 秋期 午前 問2:排他的論理和に関する問題(OR)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)