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

Yin*_*ong 2 sql list match relational-division

SQL查询

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

TABLE - PRODUCT
1
2
3
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*Woo 8

假设这CustomerTB是一个有两列的表:CustomerIDProductID.你需要将它分组CustomerID并计算它所购买的独特产品.(如果客户只能为每个产品购买一个,则不需要DISTINCT),并且应该等于product表格列表中的产品总数.

SELECT customerID
FROM   CustomerTB
GROUP BY CustomerID
HAVING COUNT(DISTINCT productID) = (SELECT COUNT(*) FROM ProductTB)
Run Code Online (Sandbox Code Playgroud)