例如,我有一个名为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个唯一项:camerasmartphonesmartwatchglucose 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/

10-11 01:16