mysql - SQL比较行

标签 mysql sql select join

我想从产品表中选择名称不等于 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;

关于mysql - SQL比较行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14378035/

相关文章:

mysql - 如何比较mysql存储过程中的两个列值

php - 如何对 foreach 内标题的 $item 值进行排序

mysql - #1075 MySQL 错误

mysql - 选择转换功能不起作用!返回语法错误?

mysql - mysql 根据出生日期计算年龄

sql - 如何在 Oracle SQL Developer 中的 json 中找到 "select where"?

php - 复制php资源

c++ - Qt/SQL - 从没有记录的表中获取列类型和名称

mysql - 如何根据此数据找出 1 周间隔的顶级股票(失败者)

asp.net - jquery:从自动完成填充选择列表?