2
我有一個簡單的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(*)不包括零個計數親近。我試圖使用與
SELECT DISTINCT location, null as count from table;
產生的表,但一個LEFT JOIN拋出右表計列JOIN一起,右似乎JOIN不包括零行或實際計數一些原因。
我覺得好像有一個MySQL命令或簡單的東西,我錯過了。我只需要找到一種方法來合併基於位置的兩個表。
任何人都可以指向正確的方向嗎?
完美!謝謝!我從來沒有想過要這樣做!將您的解決方案標記爲答案,但我仍然好奇是否可以合併我嘗試(未成功)加入的兩個表。 – aswanson
它肯定會是可能的,但它只是答案中查詢的高度複雜版本,無論如何你都需要使用'NULLIF',以免爲'NJ'計數'2' – Mchl