+-

我有一个产品ID列表,我想知道哪些订单包含所有这些产品.订单表的结构如下:
order_id | product_id
----------------------
1 | 222
1 | 555
2 | 333
显然,我可以在PHP中使用一些循环来完成它,但我想知道是否有一种优雅的方法可以在mysql中完成它.
我理想的幻想查询将是这样的:
SELECT order_id
FROM orders
WHERE (222,555) IN GROUP_CONCAT(product_id)
GROUP BY order_id
有没有希望,还是应该读托尔金? :)此外,出于好奇,如果在mysql中不可能,是否有任何其他数据库具有此功能?
最佳答案
你很亲密
SELECT order_id
FROM orders
WHERE product_id in (222,555)
GROUP BY order_id
HAVING COUNT(DISTINCT product_id) = 2
关于关系代数中的“出于好奇心”问题,这可以通过division实现.AFAIK没有RDBMS实现了任何扩展,使得这在SQL中变得简单.
点击查看更多相关文章
转载注明原文:mysql – 如何查找列表/集是否包含在另一个列表中 - 乐贴网