not exists 和 not in 对空值返回结果不同.
product_type_id 为空时,not exists 有返回,而not in没有返回值。
NOT EXISTS:
SELECT product_type_id, name
FROM product_types outer
WHERE NOT EXISTS
(SELECT 1
FROM products inner
WHERE inner.product_type_id = outer.product_type_id);
查询结果:
PRODUCT_TYPE_ID NAME
--------------- ----------
5 Magazine
NOT IN:
SELECT product_type_id, name
FROM product_types
WHERE product_type_id NOT IN
(SELECT product_type_id
FROM products);
查询结果 :no rows selected