例如,我有一个名为Information
的下表
user_id | item
-------------------------
45 | camera
36 | smartphone
23 | camera
1 | glucose monitor
3 | smartwatch
2 | smartphone
7 | smartphone
2 | camera
2 | glucose monitor
2 | smartwatch
如何检查哪个user_id至少有一项?
以下各项不是一成不变的,有时可能会有所不同。但是,在此示例中,有4个唯一项:
camera
,smartphone
,smartwatch
,glucose monitor
预期结果:
由于user_id:2每个项目至少有一个,因此结果将是:
user_id
2
到目前为止,这是我尝试过的操作,但是,如果项目列表从4个唯一项目更改为3个唯一项目,我认为它不再起作用。
SELECT *
FROM Information
GROUP BY Information.user_id
having count(DISTINCT item) >= 4
最佳答案
一种方法是按user_id
进行聚合,然后断言不同的item_id
计数与整个表中的总不同的item_id
计数匹配。
SELECT
user_id
FROM Information
GROUP BY
user_id
HAVING
COUNT(DISTINCT item_id) = (SELECT COUNT(DISTINCT item_id) FROM Information);
关于mysql - 查找至少有一项的用户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56204085/