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

标签 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

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

最佳答案

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

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

关于显示包含列表中所有值的分组行的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13332338/

相关文章:

mysql - MySQL 查询结果中不需要的 NULL 值

SQL语法错误

php - mysql 查询 2 个表的总和

java - 包含最大元素的列表

javascript - 与 JavaScript 中的正则表达式匹配的主题标签边界

sql - 使用 Postgres 查询将时间分成 block

list - 在自己的行上打印列表的所有项目

python - 在不使用 CSV 模块的情况下将 CSV 解析为元组列表

javascript - 根据匹配的数据返回数组中的对象

arrays - Match 函数如何将搜索键数组视为输入?