我有这个 MySQL 模式 Mysql Fiddle .
GRPS GRP_USRS
grpID | name usrID | grpID
------------ --------------
1 | A 1 | 1
2 | B 2 | 1
3 | C 3 | 1
4 | D 4 | 1
5 | E 16 | 2
11 | 3
12 | 3
我的目标是获取所有用户总数的组,包括 0。 像这样:
grpID | count(*)
--------------
1 | 4
2 | 1
3 | 2
4 | 0
5 | 0
我试过:
SELECT grps.grpID, IFNULL(COUNT(grp_usrs.usrID), 0) AS users
FROM grps
INNER JOIN grp_usrs ON grps.grpID = grp_usrs.grpID
GROUP BY grps.grpID ASC;
但结果是:
grpID | count(*)
--------------
1 | 4
2 | 1
3 | 2
如何包含计数为 0 的对象
最佳答案
你几乎做对了。你应该使用左连接:
SELECT grps.grpID, COUNT(grp_usrs.usrID) AS users
FROM grps
LEFT JOIN grp_usrs ON grps.grpID = grp_usrs.grpID
GROUP BY grps.grpID ASC;
关于mysql - 如何计算所有行并为结果集中不存在的行返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43424328/