問題
“商品”表,“在庫”表に対する次の SQL 文と、同じ結果が得られる SQL 文はどれか。ここで、下線部は主キーを表す。 SELECT 商品番号 FROM 商品 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫) 商品(商品番号,商品名,単価) 在庫(在庫番号,商品番号,在庫数)
選択肢
- 1SELECT 商品番号 FROM 在庫 WHERE EXISTS (SELECT 商品番号 FROM 商品)
- 2SELECT 商品番号 FROM 在庫 WHERE NOT EXISTS (SELECT 商品番号 FROM 商品)
- 3SELECT 商品番号 FROM 商品 WHERE EXISTS (SELECT 商品番号 FROM 在庫 WHERE 商品.商品番号 = 在庫.商品番号)
- 4SELECT 商品番号 FROM 商品 WHERE NOT EXISTS (SELECT 商品番号 FROM 在庫 WHERE 商品.商品番号 = 在庫.商品番号)
正解
4. SELECT 商品番号 FROM 商品 WHERE NOT EXISTS (SELECT 商品番号 FROM 在庫 WHERE 商品.商品番号 = 在庫.商品番号)
詳しい解説を見る解説を閉じる
解説
元の SQL は「在庫表に存在しない商品番号」を商品表から抽出する。これと同じ結果を相関副問合せで表すには、商品表の各行について「在庫表に同じ商品番号が存在しない(NOT EXISTS)」を条件とする。エは商品.商品番号=在庫.商品番号 が成り立つ行が在庫に存在しないものを選ぶので一致する。よってエが正しい。(出典: 平成22年度 春期 基本情報技術者試験 午前 問31)
一問一答
科目A 180問+科目B 60問