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

如何编写MySQL SQL语句实现字符串列的合并去重?

合并字符串列并去除重复项的SQL实现

假设你的表名为your_table,要处理的列是column_name,以下是不同SQL方言的实现方案:

MySQL 8.0+

通过数字表拆分字符串,去重后合并:

WITH split_data AS (
    SELECT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(t.column_name, ',', n.n), ',', -1)) AS item
    FROM your_table t
    CROSS JOIN (
        SELECT 1 AS n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4
        -- 数字数量需大于列中最多的元素个数,示例中最多2个,这里写4足够覆盖
    ) n
    WHERE n.n <= LENGTH(t.column_name) - LENGTH(REPLACE(t.column_name, ',', '')) + 1
)
SELECT GROUP_CONCAT(DISTINCT item ORDER BY item SEPARATOR ', ') AS result
FROM split_data;

PostgreSQL

利用数组拆分、展开函数实现:

SELECT string_agg(DISTINCT TRIM(item), ', ' ORDER BY item) AS result
FROM your_table,
     unnest(string_to_array(column_name, ', ')) AS item;

SQL Server 2016+

使用内置的字符串拆分与聚合函数:

SELECT STRING_AGG(DISTINCT TRIM(value), ', ') WITHIN GROUP (ORDER BY value) AS result
FROM your_table
CROSS APPLY STRING_SPLIT(column_name, ', ');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:00:06