Mysql子查询不在哪里

时间:2014-12-22 13:53:42

标签: mysql database

您好我可以使用内部联接从产品和价格表中检索结果:

SELECT product.name, price.code, price.price FROM product 
INNER JOIN price ON product.productid=price.productid;

这里一切都很好。

但是我有另一个名为items的表,它有一个也在价格表中的代码列表(例如price.price)。

我想通过使用WHERE NOT IN来显示不在items表中的产品,所以我尝试了一个子查询:

SELECT product.name, price.code, price.price FROM product 
INNER JOIN price ON product.productid=price.productid 
WHERE code NOT IN (select code from items);

我的比较条件基于价格表和项目表中的代码。我得到一个空集,所以不知道我需要做些什么来纠正这个?

干杯

1 个答案:

答案 0 :(得分:4)

不确定您的查询有什么问题,但使用null谓词时IN值存在一个问题,如果code有任何可以为空的值,则条件为是错误的,因为价值是未知的,所以如果你试着改为left join将是安全的:

SELECT product.name, price.code, price.price 
FROM product 
INNER JOIN price ON product.productid=price.productid 
LEFT JOIN items ON items.code = price.code 
WHERE items.code IS NULL