gpt4 book ai didi

mysql - 如何显示不同值的计数并包含零?

转载 作者:行者123 更新时间:2023-11-29 01:59:20 25 4
gpt4 key购买 nike

我有一个简单的 MySQL 数据库,其中包含以下字段:

mysql> SELECT * from table;
+----+-----------+------+
| id | location | name |
+----+-----------+------+
| 1 | NJ | Gary |
| 2 | MN | Paul |
| 3 | AZ | |
| 4 | MI | Adam |
| 5 | NJ | |
| 6 | MN | Dave |
+----+-----------+------+
6 rows in set (0.00 sec)

我需要检索每个州有多少人的列表,不包括没有姓名的人。换句话说,我正在尝试重现以下结果:

+----------+-------+
| location | count |
+----------+-------+
| AZ | 0 |
| MI | 1 |
| MN | 2 |
| NJ | 1 |
+----------+-------+

我可以接近

SELECT location, COUNT(*) AS count FROM table WHERE name!='' GROUP BY location;

但是,COUNT(*) 不包括零计数。我试图将 JOIN 与

生成的表一起使用
SELECT DISTINCT location, null as count from table;

但是 LEFT JOIN 会从右表中删除计数列,而 RIGHT JOIN 似乎由于某种原因不包括零行或实际计数。

我感觉好像缺少一个 MySQL 命令或一些简单的命令。我只需要找到一种方法来根据位置合并这两个表。

谁能指出我正确的方向?

最佳答案

COUNT 将返回非空值的数量,因此您需要一种方法将空字符串转换为空值以获得 0。

 SELECT location, COUNT(NULLIF(name,'')) AS count FROM table GROUP BY location;

关于mysql - 如何显示不同值的计数并包含零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19232384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com