MySQL查询:只返回参与所有事件的用户的用户id



用户参与事件表:

+---------+-------+
| user_id | event |
+---------+-------+
| 1       | 1     |
+---------+-------+
| 1       | 2     |
+---------+-------+
| 2       | 1     |
+---------+-------+

我正在寻找一个查询,只返回参与所有事件的用户的用户id。因此,上面示例表的查询应该只返回用户id 1,因为用户2错过了事件2。

可以使用聚合和having子句。如果没有单独的事件表,可以使用该表中的所有事件:

select user_id
from t
group by user_id
having count(*) = (select count(distinct event) from t);

假设用户不会多次参与同一事件,这似乎是一个合理的假设。

最新更新