SQL - 没有销售的产品

时间:2014-04-21 20:55:07

标签: mysql sql

我正在尝试列出所有没有销售的产品。我真的很接近,但我正在尝试使用NOT EXISTS语句来显示Product表中的所有ProductID,但不显示在Orderline表中;因此没有销售。我的代码如下;

SELECT product.productid
FROM product
JOIN orderline ON product.productid = orderline.productid
WHERE NOT EXISTS (

SELECT orderline.productid
FROM orderline
)
ORDER BY productid

3 个答案:

答案 0 :(得分:2)

如果您必须使用not exists,请尝试以下操作:

SELECT *
FROM product p
WHERE NOT EXISTS (
        SELECT 1
        FROM orderline o
        WHERE p.productid = o.productid
        )
ORDER BY p.productid

答案 1 :(得分:1)

如果您想获得订单行表中不存在的产品,只需使用WHERE orderline.productid IS NULL进行LEFT加入,无需使用NOT EXISTS,使用左连接将为您提供所有数据产品表,如果产品在订单表中不存在,则生成空行

SELECT p.productid
FROM product p
LEFT JOIN orderline o ON p.productid = o.productid
WHERE o.productid IS NULL
ORDER BY p.productid

答案 2 :(得分:0)

只需执行LEFT JOIN

即可避免Subselect
SELECT product.productid
FROM product
LEFT JOIN orderline USING (productid)
WHERE orderline.productid IS NULL
ORDER BY product.productid
即使LEFT JOIN中没有JOIN合作伙伴,

product也会在orderline中列出所有行。在这种情况下,orderline中的所有列都有NULL个值。这些是您在结果中需要的行。