6-08 SQL(副問合せ)

令和6年7月修了試験  問20

“商品”表,“在庫”表に対する次のSQL文の結果と同じ結果が得られるSQL文はどれか。ここで,下線部は主キーを表す。

SELECT 商品番号 FROM 商品
 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫)

解答 エ

【副問合せ】
SELECT 商品番号 FROM 商品
 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫)

“商品”表から,“在庫”表に存在しない,商品番号を抽出する。
 つまり,
“商品”表に存在し,“在庫”表に存在しない,商品番号を抽出する。

【相関副問合せ】
SELECT 商品番号 FROM 商品 ・・・①
 WHERE NOT EXISTS (SELECT 商品番号 FROM 在庫
  WHERE 商品.商品番号 = 在庫.商品番号) ・・・②

①“商品”表から1行目の商品番号が②へ渡される。
②“在庫”表から存在の有無が評価される。存在しない(NOT EXITS)ならば抽出される。
①“商品”表から2行目の商品番号が②へ渡される。
②“在庫”表から存在の有無が評価される。存在しない(NOT EXITS)ならば抽出される。
その繰り返し