MySQL中如何统计group_title为notitle的组成员数量?
针对你的需求,我整理了一个精准的MySQL查询方案,能统计group_title为notitle的组的成员数量,同时包含那些没有成员的组(成员数记为0):
SELECT g.id, COUNT(gm.id) AS memberCount FROM groups g LEFT JOIN groups_members gm ON g.id = gm.groups_id WHERE g.group_title = 'notitle' GROUP BY g.id;
为什么这么写?
- LEFT JOIN:这是关键,它能保证即使某个组在
groups_members表里没有对应的成员记录(比如你示例中的id=33的组),也会被保留在结果里,此时关联的groups_members字段会是NULL。 - COUNT(gm.id):用成员表的id来计数,因为
COUNT()会自动忽略NULL值,所以没有成员的组就会返回0,完美匹配你要的结果。 - WHERE子句:精准过滤出
group_title为notitle的组,避免统计其他组的数据。 - GROUP BY g.id:按组的id分组,确保每个组只输出一条统计结果。
执行结果
运行这条SQL后,会得到你期望的输出:
| id | memberCount |
|---|---|
| 32 | 1 |
| 33 | 0 |
内容的提问来源于stack exchange,提问作者mahdi marjani moghadam
相关产品推荐
相关产品推荐

