【问题标题】:Mysql: count, group by yet return all resultsMysql:计数,分组,但返回所有结果
【发布时间】: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 个不同的查询。但是,我们将不胜感激在单个查询中以最佳方式执行此操作的任何方法。

【问题讨论】:

  • 你想要所有枚举值的计数,而不是至少有一个条目的计数?

标签: mysql performance count group-by query-optimization


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多