0
我试图从包含外表中的外观计数的表中获取结果。此表可以有0个或更多外观。用LEFT JOIN和GROUP BY COUNT(*)在MySQL中包含NULL
像下面的例子:
表:颜色
+------+---------+
| id | name |
+------+---------+
| 1 | red |
| 2 | blue |
| 3 | yellow |
| 4 | green |
+------+---------+
表:水果
+--------+----------+
| name | color_id |
+--------+----------+
| apple | 1 |
| banana | 3 |
| grape | 4 |
| lemon | 3 |
+--------+----------+
所以我需要列出所有颜色,并在果表发生,返回像这样:
1, red, 1
2, blue, 0
3, yellow, 2
4, green, 1
我试图与此查询:
SELECT `c`.`id`, `c`.`name`, COUNT(1)
FROM color `c`
LEFT JOIN fruit `f`
ON `c`.`id` = `f`.`color_id`
GROUP BY `c`.`id`
此查询为“蓝色”,而不是返回的计数。怎么一回事,因为颜色“蓝色”没有出现在果表
不计(1)始终返回1? – Jerry
那么,你正在计算1的数量,而mysql会这么做。用'count(f.name)'替换'count(1)',然后它会计算水果的数量。 – Solarflare
@Jerry否,'COUNT(任何)'计数遇到的非空值的数量。 – Uueerdo