将所有字段分组在一行中

时间:2012-02-23 11:21:13

标签: mysql sql

如何请求将一行中的所有字段分组?

表格

id | type
---------
1  | 1
1  | 1
2  | 2
3  | 3
3  | 3

查询:

select concat('id(', count(type), ')') from T group by id;

输出:

id(2)
id(1)
id(2)

我希望得到一个字符串:'id(1)' = 2, 'id(2)' = 1, 'id(3)' = 2

1 个答案:

答案 0 :(得分:5)

如果你分两个阶段完成。制作id(n) = x条记录,然后制作GROUP_CONCAT()。

SELECT
  GROUP_CONCAT(id_count SEPARATOR ', ')
FROM
  (SELECT CONCAT('id(', id, ') = ', count(type)) id_count FROM T GROUP BY id) data

但请注意,这通常是SQL Anti-Pattern的标志。

通常建议不要将多个值压缩为单个值。通常建议将演示文稿和数据层分开。