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

如何基于多列值聚合生成去重的STRING_AGG拼接列?

实现去重后的行值拼接(解决STRING_AGG重复值问题)

原SQL中STRING_AGG会将分组内所有COLUMN1值直接拼接,包括重复项,导致出现A1, A1, A4这类重复结果。以下是不同场景下的解决方案:

直接支持DISTINCT的数据库(SQL Server 2017+、PostgreSQL 9.0+)

直接在STRING_AGG中加入DISTINCT关键字即可实现去重拼接:

SELECT
    STRING_AGG(DISTINCT COLUMN1, ', ') AS COLUMN1_ALIAS
    ,COLUMN2
    ,COLUMN3
    ,COLUMN4
FROM TABLE
GROUP BY COLUMN2, COLUMN3, COLUMN4

注:PostgreSQL中TABLE是关键字,需用双引号包裹:"TABLE"

MySQL环境(8.0+)

MySQL使用GROUP_CONCAT函数,同样支持DISTINCT:

SELECT
    GROUP_CONCAT(DISTINCT COLUMN1 SEPARATOR ', ') AS COLUMN1_ALIAS
    ,COLUMN2
    ,COLUMN3
    ,COLUMN4
FROM `TABLE`
GROUP BY COLUMN2, COLUMN3, COLUMN4

旧版本数据库(不支持聚合函数内用DISTINCT)

先通过子查询对目标列组合去重,再进行聚合拼接:

SELECT
    STRING_AGG(t.COLUMN1, ', ') AS COLUMN1_ALIAS
    ,t.COLUMN2
    ,t.COLUMN3
    ,t.COLUMN4
FROM (
    -- 先对需要的列去重
    SELECT DISTINCT COLUMN1, COLUMN2, COLUMN3, COLUMN4
    FROM TABLE
) t
GROUP BY t.COLUMN2, t.COLUMN3, t.COLUMN4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:01:12