Mysql:计数,分组,但返回所有结果
Posted
技术标签:
【中文标题】Mysql:计数,分组,但返回所有结果【英文标题】:Mysql: count, group by yet return all results 【发布时间】:2012-08-26 06:25:16 【问题描述】:我有一个包含字段的表格:
id | color | other fields....
1 red
2 blue
3 green
4 green
5 red
6 blue
颜色是枚举(红、蓝、绿)。
我想要的是按颜色排序的结果列表,并且还想知道红色/蓝色/绿色元素的 COUNT。
所以从上表中,我想要这样的信息:
1 红色 5红色 2 蓝色 6 蓝色 3 绿色 4绿色
并希望计数为 RED=2、BLUE=2、GREEN=2
如果我使用 GROUP BY 颜色,我只会得到 3 行。
我当然可以在外部单独循环计数或使用 2 个不同的查询。但是,我们将不胜感激在单个查询中以最佳方式执行此操作的任何方法。
【问题讨论】:
你想要所有枚举值的计数,而不是至少有一个条目的计数? 【参考方案1】:SELECT c.*, ColorCounts.ColorCount
FROM colors AS c
INNER JOIN (
SELECT color, COUNT(*) AS ColorCount
FROM colors
GROUP BY color
) AS ColorCounts
ON ColorCounts.color = c.color
ORDER BY c.color, c.id
【讨论】:
以上是关于Mysql:计数,分组,但返回所有结果的主要内容,如果未能解决你的问题,请参考以下文章