Mysql SQL-查找仅包含特定项的订单
我想了解包含一种或多种产品的订单:A、B、C 预期结果是:Mysql SQL-查找仅包含特定项的订单,mysql,sql,combinations,calculation,Mysql,Sql,Combinations,Calculation,我想了解包含一种或多种产品的订单:A、B、C 预期结果是: order_id 101 (explanation: product A, B, C) 103 (explanation: product A) 106 (explanation: product A, B) 107 (explanation: product B) 命令 身份证件 删除 101 无效的 102 无效的 103 无效
order_id
101 (explanation: product A, B, C)
103 (explanation: product A)
106 (explanation: product A, B)
107 (explanation: product B)
命令
身份证件
删除
101
无效的
102
无效的
103
无效的
104
无效的
105
5-5-2021
106
无效的
107
无效的
您可以计算不是A、B或C的产品,并确保它们都不在订单中:
select o.id
from Orders o join
Order_items oi
on o.id = oi.order_id
where o.deleted_at is null
group by o.id
having sum( oi.product not in ('A', 'B', 'C') ) = 0;
请注意,这使用MySQL方便的速记来计算布尔匹配。只需检查它们是否存在,不需要连接
SELECT
id
FROM
orders o
WHERE
EXISTS (
SELECT
NULL
FROM
order_items oi
WHERE
oi.order_id = o.id
AND oi.product IN (
'A',
'B',
'C'
)
)
非常感谢。它有效!!!!但我还有一个问题要问。我如何用产品来展示它?预期结果是产品销售A 3 B 3 C1@uyeahu . . . 这不是你在这里问的问题。如果您有不同的问题,请提出新问题。谢谢!它有效!!!!但我还有一个问题要问。我如何用产品来展示它?预期结果是产品销售A 3 B 3 C 1您是否可以编辑您的问题,显示您的预期产出,以及它与原始问题的区别?对新的要求不是很清楚。