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

如何为数据库表name列重复值追加出现次数后缀生成目标数据

实现方法

核心逻辑是用分组序号函数给相同姓名的行生成连续自增编号,再和原姓名字段拼接即可,主流支持窗口函数的数据库(MySQL 8.0+、PostgreSQL、SQL Server、Oracle等)都可以用以下通用写法:

-- 把代码中的「你的表名」替换为实际数据表的名称即可
SELECT CONCAT(name, '-', ROW_NUMBER() OVER(PARTITION BY name ORDER BY name)) AS name
FROM 你的表名;

参数说明:

  • PARTITION BY name:将所有姓名相同的行划到同一个分组内
  • ROW_NUMBER() OVER(...):给每个分组内的行生成从1开始的连续编号
  • CONCAT:字符串拼接函数,将原姓名、分隔符、序号拼接为最终结果

如果你使用的是不支持窗口函数的旧版本MySQL,可以用变量实现相同效果:

SELECT CONCAT(t.name, '-', t.rank) AS name
FROM (
    SELECT
        name,
        @rank := IF(@current_name = name, @rank + 1, 1) AS rank,
        @current_name := name
    FROM 你的表名
    ORDER BY name
) t;

如果需要自定义同姓名内的序号排序规则,只需要修改ORDER BY后的字段即可,比如要按数据行的id从小到大生成序号,就把窗口函数内的语句改成ROW_NUMBER() OVER(PARTITION BY name ORDER BY id ASC)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:15:03