Group_concat 聚合函数

MySQL中,Group_concat() 函数 将一个分组中的指定元素(列或表达式)的值,拼接成一个字符串返回(用逗号分隔)。

Group_concat语法

Group_concat( [要拼接在一起的字段] [order by…] [SEPARATOR separator] )

参数说明

  • 要拼接在一起的字段
            要连接的一个或多个列/表达式
  • order by…
            对拼接在一起的内容进行排序
  • SEPARATOR
            拼接符号,默认的是 separator :逗号,

返回值说明

  • 返回一个字符串:拼接在一起的内容;
  • 若结果集没有任何行,此函数将返回null;

示例

  • 原数据-查询结果会有三条
SELECT * FROM
    info 
WHERE
    CustomerId = 'CT0010' 
Id CustomerId CustomerName CustStoreId CustStoreName Type
0096 CT0010 XX公司 CS00099 门店2号 33
0002 CT0010 XX公司 CS00068 门店1号 33
0001 CT0010 XX公司 CS00000 适用全部门店 33
  • 使用Group_concat() 函数效果
-- 连接字段
-- Group_concat(要拼接在一起的字段)
SELECT 
   CustomerId,
   GROUP_CONCAT(Id) as Spli
 FROM
    info 
WHERE
    CustomerId = 'CT0010' 
CustomerId Spli
CT0010 0096 , 0002 , 0001
-- 连接字段、添加排序、替换连接符
-- Group_concat( 要拼接在一起的字段 + order by + 分隔符 )
SELECT 
   CustomerId,
   GROUP_CONCAT(
    Id 
    ORDER BY CustStoreId 
    SEPARATOR '/') as Spli
 FROM
    info 
WHERE
    CustomerId = 'CT0010' 
CustomerId Spli
CT0010 0001 / 0002 / 0096

扩展 —— Concat_WS() 字符串函数

  • Concat_WS() 函数,是通过分隔符号 按顺序将指定元素(列)数据拼接在一起,返回一个拼接字符串。
  • 若无值 Concat_WS() 会自动过滤掉(忽略)。
  • 若只有一个元素参与拼接,则直接返回该元素(原样返回)。
-- 添加Concat_WS()
SELECT 
   CustomerId,
   GROUP_CONCAT(
        CONCAT_WS( '-', CustStoreId, CustStoreName )  
        ORDER BY CustStoreId DESC 
        SEPARATOR '/') as Spli
FROM
    info 
WHERE
    CustomerId = 'CT0010' 
CustomerId Spli
CT0010 CS00099 - 门店2号 / CS00068 - 门店1号 / CS00000 - 适用全部门店
  • 整体上速度也挺快的,性能问题不大:

Group_Concat()函数性能

推荐内容

  • MySql . Concat_WS()函数
    通过分隔符,将2个及多个字段元素顺序拼接在一起,返回拼接后的字符串。

  • MySql . Field()函数
    返回一个指定的值 在给定的列表中的 索引(排序、数据优先级)。

  • MySql . CEIL()函数

  • 返回大于或等于制定数字的最小整数值。sql取余数…

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐