我有一个简单的 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 命令或我缺少的一些简单的东西。我只需要找到一种方法来根据位置合并两个表。
谁能指出我正确的方向?