mysql - 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);
这假设用户不会多次参与同一事件,这似乎是一个合理的假设。
推荐阅读
- r - 顺序堆积条图 R
- javascript - 将 airbnb 和 prettier 与 eslinter 结合使用,在 autofix 上破坏代码
- python - 触发存档功能和移动大 (100GB+) 文件的最佳方式
- google-sheets - Google 表格:使用 index() 自动填充公式
- javascript - 是否可以从非规范代码中将事件记录到赛普拉斯?
- react-admin - 参考字段中的数据没有出现反应管理员
- javascript - 如何从javascript中的JSON数据(URL)获取和存储特定值作为列表?
- android - 如何在 TextView 中显示带有 CSS 类的 HTML 文本?
- css - 如何在 Nuxt 中高效加载谷歌字体
- anaconda - 为什么我无法通过 Jupyter Notebook 更新 Anaconda 和安装库?