同一表中的 MySQL 计数,包括零计数值

2024-03-16

我有这个带有数据的表结构:

INSERT INTO `test` (`id`, `email`, `id_user_ref`, `name`) VALUES
(1, '[email protected] /cdn-cgi/l/email-protection', NULL, 'Mike'),
(2, '[email protected] /cdn-cgi/l/email-protection', '1', 'Jhonny'),
(3, '[email protected] /cdn-cgi/l/email-protection', '1', 'Michael'),
(4, '[email protected] /cdn-cgi/l/email-protection', '2', 'Jorhe'),
(5, '[email protected] /cdn-cgi/l/email-protection', '3', 'Mia');

我需要使用此查询计算所有用户的 id_user_ref :

SELECT id, COUNT(name) AS refNr FROM test GROUP BY id_user_ref
HAVING id_user_ref IS NOT NULL;

这可行,但问题是即使计数结果为 0,我也需要显示所有结果。

我尝试了对同一张表的多次左连接,但没有成功。

输出应该是:

id  refNr
1    2
2    1
3    1
4    0
5    0

尝试这个:

SELECT 
  t1.id, 
  IFNULL(COUNT(t2.name), 0) AS refNr 
FROM test AS t1
LEFT JOIN test AS t2 ON t1.id = t2.id_user_ref
GROUP BY t1.id;

SQL Fiddle 演示 http://www.sqlfiddle.com/#!2/ce037/3

这会给你:

| ID | REFNR |
--------------
|  1 |     2 |
|  2 |     1 |
|  3 |     1 |
|  4 |     0 |
|  5 |     0 |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

同一表中的 MySQL 计数,包括零计数值 的相关文章

随机推荐