Sql比较行

时间:2013-01-17 11:26:07

标签: mysql sql select join

我想从产品表中选择名称不等于ordered_products中存在的名称的所有内容。我尝试了这个,但它没有用:

SELECT * FROM product WHERE naam IS NOT (SELECT naam FROM ordered_products)

2 个答案:

答案 0 :(得分:5)

您可以使用NOT IN谓词,如下所示:

SELECT * 
FROM product 
WHERE naam NOT IN (SELECT naam 
                   FROM ordered_products
                   WHERE naam IS NOT NULL);

但是这不安全,如果来自另一个表的NULL的任何naam值,这就是为什么我将WHERE naam IS NOT NULL添加到子查询中的原因。更好的是,像这样使用JOIN

SELECT p.* 
FROM product
LEFT JOIN ordered_products o ON p.naam = o.naam
WHERE p.naam IS NULL;

答案 1 :(得分:0)

SELECT * FROM product WHERE naam NOT IN (SELECT naam FROM ordered_products)

OR

SELECT P.* 
FROM product P
LEFT JOIN  ordered_products O ON P.naam = O.naam

希望这有帮助