将所有字段分组在一行中

Ops*_*psa 4 mysql sql

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

表:

id | type
---------
1  | 1
1  | 1
2  | 2
3  | 3
3  | 3
Run Code Online (Sandbox Code Playgroud)

查询:

select concat('id(', count(type), ')') from T group by id;
Run Code Online (Sandbox Code Playgroud)

输出:

id(2)
id(1)
id(2)
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*lie 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
Run Code Online (Sandbox Code Playgroud)

但请注意,这通常是SQL反模式的标志.

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