从同一张表中分组

时间:2012-07-01 00:39:59

标签: mysql sql

是否可以使用多列中的group by

这是members表:

Id | CateogryId | Value
1  | 1          | 10
2  | 2          | 20
1  | 1          | 10

目前,我可以使用

返回(A,B)
( SELECT GROUP_CONCAT(DISTINCT members.Category) 
    FROM members 
    JOIN categories on members.CategoryId = category.Id
         ) as "Categories"

但我也想要每个类别旁边的总数,例如(A:20, B:20)

1 个答案:

答案 0 :(得分:1)

从具有类别总计的虚拟表(子查询)开始,如下所示:

SELECT m.Category, SUM(m.Value) as Total
  FROM members m
 GROUP BY m.Category
 ORDER BY m.Category

然后使用你的虚拟桌面这样做你的concat。

SELECT GROUP_CONCAT(CONCAT(Category, ': ', Total) SEPARATOR ' ')
  FROM (
    SELECT m.Category, SUM(m.Value) as Total
      FROM members m
     GROUP BY m.Category
     ORDER BY m.Category
  )A