【发布时间】:2013-01-17 11:26:06
【问题描述】:
我想从产品表中选择名称不等于ordered_products 中现有名称的所有内容。我试过了,但没有用:
SELECT * FROM product WHERE naam IS NOT (SELECT naam FROM ordered_products)
【问题讨论】:
-
在 NOT 和删除之后缺少 IN :)
我想从产品表中选择名称不等于ordered_products 中现有名称的所有内容。我试过了,但没有用:
SELECT * FROM product WHERE naam IS NOT (SELECT naam FROM ordered_products)
【问题讨论】:
您可以像这样使用NOT IN 谓词:
SELECT *
FROM product
WHERE naam NOT IN (SELECT naam
FROM ordered_products
WHERE naam IS NOT NULL);
但这并不安全,如果有来自另一个表的naam 的任何NULL 值,这就是我将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;
【讨论】:
SELECT * FROM product WHERE naam NOT IN (SELECT naam FROM ordered_products)
或
SELECT P.*
FROM product P
LEFT JOIN ordered_products O ON P.naam = O.naam
希望对你有帮助
【讨论】: