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

MySQL中按字段分组拼接CONCAT结果的SQL查询实现

按分组合并字符串的SQL解决方案

你需要的是分组后聚合拼接字符串,原来的SQL只是对每行单独做拼接,没有执行分组和聚合操作,所以无法将同一组的结果合并成单个字段。以下是不同数据库环境下的实现方案:

MySQL/MariaDB 实现

使用GROUP_CONCAT函数完成分组字符串聚合:

SELECT 
    b,
    GROUP_CONCAT(CONCAT(b, '-', c) SEPARATOR ', ') AS merged_str
FROM viborka
GROUP BY b;

执行后结果:

bmerged_str
xx-3, x-7
yy-4, y-9

PostgreSQL 实现

使用STRING_AGG函数:

SELECT 
    b,
    STRING_AGG(CONCAT(b, '-', c), ', ') AS merged_str
FROM viborka
GROUP BY b;

SQL Server 实现

2017及以上版本

直接使用STRING_AGG:

SELECT 
    b,
    STRING_AGG(CONCAT(b, '-', c), ', ') AS merged_str
FROM viborka
GROUP BY b;

2016及以下版本

通过FOR XML PATH方式拼接:

SELECT 
    b,
    STUFF((
        SELECT ', ' + CONCAT(b, '-', c)
        FROM viborka v2
        WHERE v2.b = v1.b
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS merged_str
FROM viborka v1
GROUP BY b;

Oracle 实现

使用LISTAGG函数:

SELECT 
    b,
    LISTAGG(CONCAT(b, '-', c), ', ') WITHIN GROUP (ORDER BY a) AS merged_str
FROM viborka
GROUP BY b;

WITHIN GROUP (ORDER BY a)用来保证拼接顺序和原表中a的顺序一致,可根据需求调整排序字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:46:02