【问题标题】:Sql comparing rowsSql比较行
【发布时间】:2013-01-17 11:26:06
【问题描述】:

我想从产品表中选择名称不等于ordered_products 中现有名称的所有内容。我试过了,但没有用:

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

【问题讨论】:

  • 在 NOT 和删除之后缺少 IN :)

标签: mysql sql select join


【解决方案1】:

您可以像这样使用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;

【讨论】:

    【解决方案2】:
    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
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      相关资源
      最近更新 更多