「販売中(status=20)の商品だけ」を取り出したい時。WHERE status = 20 でも書けますが、 「販売前と販売終了 以外」と読み替えれば NOT IN も使えます:
SELECT * FROM products WHERE status NOT IN (10, 30)
NOT IN (a, b) は「a でも b でもない」と読みます。除外したい値を列挙できるので、 「キャンセル以外の注文」「特定の社内テストユーザー以外」みたいな場面で便利。
期待結果:21 件(販売中の商品)。
📌 QA 視点:NOT IN は NULL を含むカラムだと罠あり。WHERE col NOT IN (1, NULL) のように NULL がリスト内にあると、想定外の結果になりがち。今回は status は NOT NULL なので問題なし。