使用此查询:

SELECT ARCustomerCode,
       count(ARCustomerCode)
FROM customers
group by ARCustomerCode
having count(ARCustomerCode) > 1;

我能够确定ARCustomerCode不是唯一的行数.如何通过附加唯一的行ID来更新每个重复的ARCustomerCode字段?

欣赏你的洞察力!

推荐答案

您可以利用ROW_NUMBER窗口函数 for each 重复的"ARCustomerCode"值分配一个排名,然后只更新每个代码的排名&>1(所有重复)的记录.

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER(PARTITION BY ARCustomerCode ORDER BY <row_id_col>) AS rn
    FROM customers
)
UPDATE     customers
INNER JOIN cte 
        ON customers.<row_id_col> = cte.<row_id_col>
SET customers.ARCustomerCode = CONCAT(customers.ARCustomerCode, customers.<row_id_col>)
WHERE rn > 1

Mysql相关问答推荐

try 使用TypeORM创建新表时出现SQL语法错误

如何获得表中只有最大值行的一个列被另一个列分区?

Laravel DB::Transaction()

使用复合主键更新后的MySQL触发器失败

可以优化这个带有重复WHERE子句的查询吗?

Python - 执行原始 SQL 时获取更新查询 (Mysql) 的结果

使用Workbench时如何添加mysqldump配置标志

排序子查询结果并返回每个 ID 的第一行

为什么 `count` 函数有效但 `sum` 无效?

Mysql,显示谁已经和没有 Select 退出巴士服务

在表中找到最大值,然后分别显示SQL组和每个SQL组中的最大值计数

在 MySQL 中 Select COUNT of MAX

mysql从另一个表中 Select 不相等的值

减少mysql中的值但不是负数

使用 MySQL 流式传输大型结果集

在 PHP 中获取 MySQL 列的总和

如何用一系列日期填充表格?

MySQL与空值比较

将 JavaScript 到日期对象转换为 MySQL 日期格式 (YYYY-MM-DD)

如何从邮箱地址中 Select 域名