如何破解MySQL GROUP_CONCAT以获取有限数量的行?

Mis*_*ier 6 mysql limit group-concat

我不知何故需要这个功能,但MySQL目前不支持它.

我正在使用GROUP_CONCAT(CONCAT(...))生成类似xml的东西.

但是当大小超过限制时,xml就会被破坏!

所以我必须以某种方式使它只检索5行!

小智 15

我已经解决了这个问题SUBSTRING_INDEX.

例如:

SELECT SUBSTRING_INDEX(GROUP_CONCAT(Field1 SEPARATOR ','), ',', [# of elements to return])
FROM Table1;
Run Code Online (Sandbox Code Playgroud)


rek*_*ans 5

查尔斯回答的一个例子:

基本的:

SELECT GROUP_CONCAT( field ) FROM ( SELECT field FROM table LIMIT 200 )
Run Code Online (Sandbox Code Playgroud)

扩展:

如果结果被缓冲区截断,CAST 会很有用:

SELECT CAST( GROUP_CONCAT( field ) AS CHAR(2048) ) FROM ( SELECT field FROM table LIMIT 200 )
Run Code Online (Sandbox Code Playgroud)


Cha*_*les 2

使用临时表/子查询来限制结果?如果没有看到您的查询,就很难为该路线提供可靠的建议。

但是,您可能会发现该group_concat_max_len设置更有用。它控制操作的最大长度GROUP_CONCAT(以字符串长度为单位)。GROUP_CONCAT当您无法限制结果时,请提高它以防止 s 损坏。