【问题标题】:SQL query on showing a grouped rows that contains all values from a list关于显示包含列表中所有值的分组行的 SQL 查询
【发布时间】:2012-10-31 04:55:32
【问题描述】:

SQL 查询

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

TABLE - PRODUCT
1
2
3

结果应该是 1001,因为它得到的所有值都与订单表匹配。
PRODUCT 表可能会随着时间而改变。
我想知道谁从我这里购买了所有产品。
谢谢!

【问题讨论】:

  • 考虑添加您已经尝试过的查询。

标签: sql list match relational-division


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2022-11-26
    • 2011-11-20
    • 2014-06-27
    • 2023-01-02
    • 2023-01-06
    • 2013-08-29
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多