我有组 table
编号 |组名
然后是用户(这里不重要)
编号 |用户名
然后映射map-group-user
编号 |群组编号 |用户ID
第一步我想知道每个组中有多少用户......
SELECT
g.groupName as name, count(DISTINCT m.groupId, m.userId) as totalCount
FROM group g
LEFT JOIN map-group-user m ON ( g.id = m.groupId)
GROUP BY g.id
这有效...我的结果是:
名字 |总数
组1 | 34
组2 | 23
组3 | 11
现在我想在相同的结果中添加另一列...我想知道特定用户(比如说 userId = 1)是否被添加到这个特定的组(所以不仅要计算有多少用户加入了该组,还要知道我的用户属于哪个组) 所以在同一个查询中,我想检查 map-group-user 中是否有我的 userId (1) 的每个组的条目
所以我想要这样的结果:
名字 |总数 |我的用户
组1 | 34 | 1
组2 | 23 | 0
组3 | 11 | 1
所以 myUser = 1 他已经在组中了...
我希望我的解释很清楚:)
感谢您的帮助
最佳答案
将此添加为您选择的列:
CASE
WHEN m.userId = 541 THEN 1
ELSE 0
END as myUser
在我的示例中,您的用户 ID 是 541。所以像这样:
SELECT g.groupName as name
, count(DISTINCT m.groupId, m.userId) as totalCount
, sum(CASE
WHEN m.userId = 541 THEN 1
ELSE 0
END) as myUser
FROM `group` as g
LEFT JOIN `map-group-user` as m ON (g.id = m.groupId)
GROUP BY g.groupName
这是 DEMO
关于mysql - 从 2 个表中获取数据 - 一次有计数,一次没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58650278/