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

MySQL删除code_number重复记录 合并同组字段值到单条记录

MySQL 重复数据清理并合并字段实现

你现有直接删除重复项的逻辑会直接丢失重复行的字段内容,必须先完成保留记录的字段值合并,再删除冗余行,具体实现如下:

-- 合并字段更新到保留行 + 删除重复行,可直接整体执行
UPDATE sheets s
INNER JOIN (
    SELECT
        MIN(id) AS retain_id,
        code_number,
        GROUP_CONCAT(animal SEPARATOR ', ') AS merged_animal,
        GROUP_CONCAT(location SEPARATOR ', ') AS merged_location
    FROM sheets
    GROUP BY code_number
) t ON s.id = t.retain_id
SET s.animal = t.merged_animal, s.location = t.merged_location;

DELETE FROM sheets
WHERE id NOT IN (
    SELECT retain_id FROM (
        SELECT MIN(id) AS retain_id FROM sheets GROUP BY code_number
    ) AS temp_table
);

逻辑说明

  • 子查询按code_number分组,通过MySQL内置的GROUP_CONCAT()函数将同组下的animal、location字段按指定分隔符拼接,同时取每个分组下最小的id作为需要保留的记录id
  • 第一步UPDATE操作仅命中每个分组需要保留的记录,将拼接完成的合并值写入对应字段
  • 删除语句额外嵌套了一层临时表别名,是为了规避MySQL不允许在DELETE/UPDATE语句中直接查询同表作为子查询条件的语法报错
  • 执行完成后直接查询表数据即可匹配预期结果,同code_number下的字段值会全部合并到id最小的保留记录中,其余重复记录被彻底清除

提示:如果需要调整字段拼接的分隔符,直接修改GROUP_CONCAT函数中SEPARATOR后的字符串即可;如果需要去重拼接值,可以在函数内加DISTINCT关键字,例如GROUP_CONCAT(DISTINCT animal SEPARATOR ', ')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:33:33