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

如何用单条SQL查询提取多列去重值并合并为单列字符串?

如何用单条SQL查询提取多列去重值并拼接成单个字符串?

假设你有如下结构和数据的表:

ID  COL1    COL2    COL3
1   P1      d1      V1
2   P1      d2      V1
3   P3      d1      V1
4   P3      d2      V1
5   P4      d1      V1
6   P4      d2      V1

需要提取所有列的去重值,拼接成P1;P3;P4;V1;d1;d2这样的单个字符串,以下是不同数据库的实现方案:

MySQL/MariaDB 写法

利用UNION自动去重合并多列数据,再用GROUP_CONCAT完成字符串拼接:

SELECT GROUP_CONCAT(DISTINCT val SEPARATOR ';') AS result
FROM (
    SELECT COL1 AS val FROM your_table
    UNION
    SELECT COL2 AS val FROM your_table
    UNION
    SELECT COL3 AS val FROM your_table
) AS temp;

如果需要按特定顺序拼接,可在GROUP_CONCAT里加上排序规则:

SELECT GROUP_CONCAT(DISTINCT val ORDER BY val SEPARATOR ';') AS result
FROM (
    SELECT COL1 AS val FROM your_table
    UNION
    SELECT COL2 AS val FROM your_table
    UNION
    SELECT COL3 AS val FROM your_table
) AS temp;

SQL Server 写法(2017及以上版本)

用STRING_AGG函数实现拼接,结合UNION去重:

SELECT STRING_AGG(val, ';') AS result
FROM (
    SELECT COL1 AS val FROM your_table
    UNION
    SELECT COL2 AS val FROM your_table
    UNION
    SELECT COL3 AS val FROM your_table
) AS temp;

也可以先对每列单独去重再合并:

SELECT STRING_AGG(val, ';') AS result
FROM (
    SELECT DISTINCT COL1 AS val FROM your_table
    UNION ALL
    SELECT DISTINCT COL2 AS val FROM your_table
    UNION ALL
    SELECT DISTINCT COL3 AS val FROM your_table
) AS temp;

PostgreSQL 写法

用STRING_AGG函数,支持直接指定排序规则:

SELECT STRING_AGG(val, ';' ORDER BY val) AS result
FROM (
    SELECT COL1 AS val FROM your_table
    UNION
    SELECT COL2 AS val FROM your_table
    UNION
    SELECT COL3 AS val FROM your_table
) AS temp;

或者先合并所有值再去重拼接:

SELECT STRING_AGG(DISTINCT val, ';' ORDER BY val) AS result
FROM (
    SELECT COL1 AS val FROM your_table
    UNION ALL
    SELECT COL2 AS val FROM your_table
    UNION ALL
    SELECT COL3 AS val FROM your_table
) AS temp;

注意:将上述代码中的your_table替换为你的实际表名即可。

内容的提问来源于stack exchange,提问作者sanae el madani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 13:33:40