选择值不存在的 SQL

Mar*_*man 3 mysql sql select

我有两列product_idcategory_id. 我想全选product_id没有的category_id = 90

我使用此查询,但它返回 null。我究竟做错了什么?

SELECT * 
FROM  `oc_product_to_category` 
WHERE NOT EXISTS (
  SELECT * 
  FROM  `oc_product_to_category` 
  WHERE category_id = 90
)
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 8

您没有关联内部和外部查询。如果category_id = 90内部查询至少有一个产品将返回一些行,因此NOT EXISTS条件将始终为假,而外部查询将不返回任何行。您需要添加一个条件来指定内部查询和外部查询引用同一个产品:

SELECT * 
FROM  `oc_product_to_category` a
WHERE NOT EXISTS (
  SELECT * 
  FROM   `oc_product_to_category` b
  WHERE  category_id = 90 AND
         a.product_id = b.product_id -- Here!
)
Run Code Online (Sandbox Code Playgroud)