0

我有一个包含字段的表:

id | color | other fields....

1    red
2    blue
3    green
4    green
5    red
6    blue 

颜色是枚举(红色,蓝色,绿色)。

我想要的是按颜色排序的结果列表,并且还想知道红色/蓝色/绿色元素的计数。

因此,从上表中,我想要以下信息:

1红5红2蓝6蓝3绿4绿

并希望计数为 RED=2, BLUE=2, GREEN=2

如果我使用 GROUP BY 颜色,我只会得到 3 行。

我当然可以在外部单独循环计数或使用 2 个不同的查询。但是,任何在单个查询中以最佳方式执行此操作的方法都将受到赞赏。

4

1 回答 1

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
于 2012-08-26T06:30:06.147 回答