mysql - 如何计算所有行并为结果集中不存在的行返回 0

标签 mysql

我有这个 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/

相关文章:

php - 是否可以将 PHP+MySQL 捆绑/发送到独立的可执行文件中?

mysql - 跨分片的增量 ID

c# - 如何在 C# 中使用 Linq 在 Sql 中进行条件连接?

Mysql 阻止在某个日期之后插入

mysql - 错误 : ER_BAD_FIELD_ERROR: Unknown column 'asd123' in 'field list' in node js

mysql - 集群中的aws aurora rds(mysql)无法插入表情符号

php - 如何从mysql数据库在PHP中的多维数组中添加数组?

mysql - SQL 中的左外连接右表中缺少数据

当值为 NULL 时,MySQL 唯一索引不适用

php - LARAVEL:MYSQL:违反完整性约束:1452 无法添加或更新子行:外键约束失败