我有一个包含字段的表:
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个不同的查询。但是,任何在单个查询中以最佳方式执行此操作的方法都将受到赞赏。
答案 0 :(得分: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