+-
mysql – 如何查找列表/集是否包含在另一个列表中
我有一个产品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 – 如何查找列表/集是否包含在另一个列表中 - 乐贴网