You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala中如何实现相同键对应列值的合并拼接

同列分组值拼接实现方法

这个需求属于典型的分组字符串聚合场景,不同数据库的内置实现函数有差异,以下是各主流数据库可直接复用的写法,默认拼接分隔符为, :

  • MySQL / SQLite
    直接使用内置的GROUP_CONCAT聚合函数即可:
    SELECT
      ColumnA,
      GROUP_CONCAT(ColumnB SEPARATOR ', ') AS ColumnB
    FROM 你的实际表名
    GROUP BY ColumnA;
    
    如果需要对拼接值去重、排序,可以调整为GROUP_CONCAT(DISTINCT ColumnB ORDER BY ColumnB SEPARATOR ', ')。
  • PostgreSQL / SQL Server 2017及以上版本
    使用STRING_AGG聚合函数:
    SELECT
      ColumnA,
      STRING_AGG(ColumnB, ', ') AS ColumnB
    FROM 你的实际表名
    GROUP BY ColumnA;
    
    支持拼接时指定排序、去重,写法为STRING_AGG(DISTINCT ColumnB, ', ' ORDER BY ColumnB)。
  • SQL Server 2016及更早版本
    没有内置的字符串聚合函数,需要通过FOR XML PATH配合STUFF实现:
    SELECT
      t1.ColumnA,
      STUFF(
        (SELECT ', ' + ColumnB
         FROM 你的实际表名 t2
         WHERE t2.ColumnA = t1.ColumnA
         FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)'),
        1, 2, ''
      ) AS ColumnB
    FROM 你的实际表名 t1
    GROUP BY t1.ColumnA;
    
  • Oracle
    使用LISTAGG函数实现,必须通过WITHIN GROUP指定拼接顺序:
    SELECT
      ColumnA,
      LISTAGG(ColumnB, ', ') WITHIN GROUP (ORDER BY ColumnB) AS ColumnB
    FROM 你的实际表名
    GROUP BY ColumnA;
    
    如果拼接后字符串长度超出限制,Oracle 12cR2及以上版本可以追加ON OVERFLOW TRUNCATE参数避免运行报错。

内容的提问来源于stack exchange,提问作者Galay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 07:24:24