SQL查询显示包含列表中所有值的分组行

时间:2012-11-11 15:03:08

标签: sql list match relational-division

SQL QUERIES

TABLE - CUSTOMER
1001,1
1001,2
1001,3
1002,1
1002,3
1003,3

TABLE - PRODUCT
1
2
3

结果应为1001因为它使所有值与订单表匹配。
PRODUCT表可能会随时间而变化 我想找出谁从我这里买了所有产品。
谢谢!

1 个答案:

答案 0 :(得分:8)

假设CustomerTB是一个包含两列的表:CustomerIDProductID。您需要按CustomerID对其进行分组,并计算他购买的独特产品。 (如果客户只能为每个产品购买一个),则不需要 DISTINCT,并且应该等于product表列表中的产品总数。

SELECT customerID
FROM   CustomerTB
GROUP BY CustomerID
HAVING COUNT(DISTINCT productID) = (SELECT COUNT(*) FROM ProductTB)