gpt4 book ai didi

mysql - sql选择不包含某些项目的订单

转载 作者:行者123 更新时间:2023-12-01 00:42:48 25 4
gpt4 key购买 nike

数据库有 3 个表,"items"、"orders"和 "orderitems",表示 N:N 关系。我需要找到不包含某些项目的订单。例如,我想获取所有不包括苹果、橙子或香蕉的订单。

我试过:

SELECT * FROM orders o, 
LEFT JOIN orderitems oi ON o.order_id=oi.order_id
LEFT JOIN items i ON oi.item_id=i.item_id
WHERE
i.name NOT IN ('banana', 'apple', 'orange')

这是行不通的。它会返回所有订单,只要它们至少包含不同于“banana”、“apple”和“orange”的项目。

我考虑过对包含这些项目的所有订单执行“NOT IN”子选择,但这会非常慢,因为子选择将获得几乎所有订单(数百万个结果)。

最佳答案

尝试使用 group byhaving:

SELECT oi.order_id
FROM orderitems oi JOIN
items i
ON oi.item_id=i.item_id
GROUP BY oi.order_id
HAVING SUM(i.name IN ('banana', 'apple', 'orange')) = 0;

如果您想要完整的订单信息,您可以重新加入 orders 表。

关于mysql - sql选择不包含某些项目的订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27772400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com