mysql - 如何在 MySQL 中查找重复值和更新值

标签 mysql sql

使用此查询:

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

我能够识别 ARCustomerCode 不唯一的行数。如何通过附加唯一行 ID 来更新每个重复的 ARCustomerCode 字段?

欣赏洞察力!

最佳答案

您可以利用ROW_NUMBER窗口函数为每个重复的“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 - 如何在 MySQL 中查找重复值和更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74799585/

相关文章:

php - AS3 HTMLRequest 返回带有 PHP 数据的 HTML 标记

mysql - 无法连接到 Mysql - my.cnf 问题

SQL Server - 隐式连接与显式不同的结果

sql - ALTER FEDERATION SWITCH 操作失败。指定的边界值不存在

c# - 在单个查询中将数据插入多个表

mysql - 将 PHPMyAdmin/MySQL-Workbench 连接到 MySQL 容器 (Docker)

php - 如果A表存在于B表中,并且满足查询中的WHERE语句,则从A表中随机获取结果

java - Hibernate Select Query空约束

sql - 如何将视觉上选择的文本通过管道传输到 UNIX 命令并将输出附加到 Vim 中的当前缓冲区

sql - SQL如何选择最近的日期项目