我需要在订单数据库中搜索包含来自不同制造商的商品组合的订单。本质上,我需要一份包含 2 件或更多商品的任何订单的列表,其中一件商品来自制造商 A,一件商品来自制造商 B。 我想我可以在 sku 列上使用“like”,因为它们的前缀是两个代表制造商的字母。作为示例,相关表格和列如下:
orders 表有一个 order_id 和一个 create_date (unix 时间戳 - 我需要过去两年的订单 - 我可以处理这部分,但如果有人觉得慷慨的话,请包含它)
order_items 表包含相关 order_id 和 order_item_id 的列。它还包括一个product_sku。 sku 看起来像 MA-??????对于制造商 A 和 MB-???对于制造商 B。
我不是一个 sql 专家,感觉它涉及到包含 count() 函数的选择中的选择,但不知道从哪里开始。如有任何帮助,我们将不胜感激。
最佳答案
实际上找到答案的速度比我想象的要快:
SELECT order_id
FROM orders AS o
WHERE
o.order_id IN (select DISTINCT order_id FROM order_items WHERE order_item_sku LIKE 'MA-%')
AND
o.order_id IN (select DISTINCT order_id FROM order_items WHERE order_item_sku LIKE 'MB-%')
关于mysql返回链接表匹配两组条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43375787/