Mysql SQL-查找仅包含特定项的订单

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 无效

我想了解包含一种或多种产品的订单: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 无效的 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您是否可以编辑您的问题,显示您的预期产出,以及它与原始问题的区别?对新的要求不是很清楚。