GBase 8a
其他
文章

GROUP_CONCAT 函数

发表于2025-12-29 13:59:40119次浏览1个评论

GROUP_CONCAT 函数用于将同一分组内的多个字符串值连接成一个字符串。
 核心语法

GROUP_CONCAT ( [DISTINCT] expr [ORDER BY ... [ASC/DESC]] [topN xxxx] [SEPARATOR 'xxxx'] )
⚙ 参数说明| 参数部分 | 说明 | 
|   DISTINCT   | 可选。去除同一分组内聚集列的重复值。默认保留重复值。 | 
|   expr   | 必选。需要聚合的列或基于列的表达式。 | 
|   ORDER BY ...   | 可选。指定聚合时值的排序方式,以控制连接后字符串的顺序。支持多列排序。 | 
|   topN xxxx   | 可选。限制同一分组内最多输出的行值个数。  topN  为0时,函数返回  NULL  。 | 
|   SEPARATOR 'xxxx'   | 可选。指定连接值之间的分隔符。默认使用半角逗号(,)。 |

 功能特点与限制
长度限制:连接后字符串的长度受系统参数   group_concat_max_len   的限制(默认值为1024字节)。如果结果可能超长,需要预先调整此参数。
SET GLOBAL group_concat_max_len = 10240;
数据类型支持:该函数理论上对数据类型没有限制,但暂不支持 BLOB 和 LONGBLOB 数据类型。
参数互斥:  DISTINCT   参数和   ORDER BY   子句是互斥的,不能同时使用。
 使用示例
假设有表   t1  ,包含   id   和   name   两列。以下查询将每个   id   分组下的   name   用 "++" 连接起来,并按照   id   排序:
SELECT id, GROUP_CONCAT(name SEPARATOR '++') WITHIN (ORDER BY id) AS concatenated_names 
FROM t1 
GROUP BY id;
 等价函数
 STRING_AGG   函数与   GROUP_CONCAT   功能相同,语法也基本一致。
SELECT id, STRING_AGG(name SEPARATOR '++') WITHIN (ORDER BY id) AS test FROM t1 GROUP BY id;
 

评论

登录后才可以发表评论
用户头像
柒柒天晴发表于 7个月前
学习下