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

如何去除数据库同一行字段内的重复值?

解决字段内逗号分隔值的去重问题

你的原SQL是用于识别整行重复的记录(即多条行的columna值完全相同的情况),但你的需求是对单个字段内部的重复子值去重,所以这个方法不适用。

以下是不同主流数据库下的实现方案:

  • PostgreSQL 实现
    利用string_to_array拆分字符串,unnest转为行,DISTINCT去重后用string_agg重新拼接:
SELECT string_agg(DISTINCT elem, ',') AS columna
FROM tablea, unnest(string_to_array(columna, ',')) AS elem;
  • MySQL 8.0+ 实现
    通过JSON_TABLE将字符串转为JSON数组后拆分,去重后用GROUP_CONCAT拼接:
SELECT GROUP_CONCAT(DISTINCT elem SEPARATOR ',') AS columna
FROM tablea,
     JSON_TABLE(
         CONCAT('["', REPLACE(columna, ',', '","'), '"]'),
         '$[*]' COLUMNS (elem VARCHAR(255) PATH '$')
     ) AS jt;
  • SQL Server 实现
    用STRING_SPLIT拆分字符串,DISTINCT去重后通过STRING_AGG拼接:
SELECT STRING_AGG(DISTINCT value, ',') AS columna
FROM tablea
CROSS APPLY STRING_SPLIT(columna, ',');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 04:55:57