Group_concat 聚合函数

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

Group_concat语法

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

参数说明

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

返回值说明

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

示例

  • 原数据-查询结果会有三条
SELECT * FROM
    info 
WHERE
    CustomerId = 'CT0010' 
IdCustomerIdCustomerNameCustStoreIdCustStoreNameType
0096CT0010XX公司CS00099门店2号33
0002CT0010XX公司CS00068门店1号33
0001CT0010XX公司CS00000适用全部门店33
  • 使用Group_concat() 函数效果
-- 连接字段
-- Group_concat(要拼接在一起的字段)
SELECT 
   CustomerId,
   GROUP_CONCAT(Id) as Spli
 FROM
    info 
WHERE
    CustomerId = 'CT0010' 
CustomerIdSpli
CT00100096 , 0002 , 0001
-- 连接字段、添加排序、替换连接符
-- Group_concat( 要拼接在一起的字段 + order by + 分隔符 )
SELECT 
   CustomerId,
   GROUP_CONCAT(
    Id 
    ORDER BY CustStoreId 
    SEPARATOR '/') as Spli
 FROM
    info 
WHERE
    CustomerId = 'CT0010' 
CustomerIdSpli
CT00100001 / 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' 
CustomerIdSpli
CT0010CS00099 - 门店2号 / CS00068 - 门店1号 / CS00000 - 适用全部门店
  • 整体上速度也挺快的,性能问题不大:

Group_Concat()函数性能

推荐内容

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

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

  • MySql . CEIL()函数

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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐