我正在尝试列出所有没有销售的产品。我真的很接近,但我正在尝试使用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
答案 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
:
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
个值。这些是您在结果中需要的行。