基本情報技術者試験 科目 A — SQL 練習問題 第 11 問 / 14
NOT IN で「存在しない」を探す|基本情報 SQL
次の SQL を実行したとき、得られる結果はどれか。
この問題で使う表
商品
| 商品番号 | 商品名 | 分類 | 単価 |
|---|---|---|---|
| P01 | ボールペン | A | 120 |
| P02 | ノート | A | 200 |
| P03 | 消しゴム | B | 80 |
| P04 | 定規 | B | 150 |
| P05 | ホチキス | C | 500 |
5 行
在庫
| 商品番号 | 倉庫 | 在庫数 |
|---|---|---|
| P01 | W1 | 30 |
| P01 | W2 | 10 |
| P02 | W1 | 0 |
| P03 | W2 | 25 |
4 行
SELECT 商品番号 FROM 商品
WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫)解答を選ぶ
解説
正解: イ
| 商品番号 |
|---|
| P04 |
| P05 |
内側の SELECT は在庫表にある商品番号 (P01, P02, P03) を返します。
外側はその中に含まれない商品を探すので、在庫が 1 件も無い P04 と P05 が残ります。
同じことは NOT EXISTS の相関副問合せでも書けます。ただし内側の列に NULL が混ざる場合、NOT IN は 1 行も返さなくなるのに対し、NOT EXISTS は期待どおりに動きます。この違いはよく問われます。
引っかけの正体
NOT を見落として「在庫のある商品」を選ぶ
この問題のもとになっている解説: 副問合せ — IN・EXISTS・相関副問合せ
データベース分野をもっと学ぶ(おすすめ書籍)
キタミ式イラストIT塾 基本情報技術者 令和08年
きたみりゅうじ
イラスト主体で科目Aの全範囲を通読できる入門書。用語の土台を作ってから科目Bのアルゴリズムに入ると理解が速い。
Amazon で見る →
令和08年 イメージ&クレバー方式でよくわかる かやのき先生の基本情報技術者教室
栢木厚
科目Aの頻出テーマを図と語呂で押さえる入門書。参考書と問題集を兼ねるので初受験の一冊目に選びやすい。
Amazon で見る →
令和08年 基本情報技術者 パーフェクトラーニング過去問題集
山本三雄
公開問題を大量に解いて仕上げるための問題集。擬似言語の読解に慣れた後、本番形式で時間配分を試す段階で使う。
Amazon で見る →
本セクションはAmazonアソシエイトのリンクを含みます。