重命名Mysql重复值

时间:2014-02-15 09:45:15

标签: mysql duplicates

我的表“user”的列为“username”

由于合并的2个数据库,我们有许多重复的用户名,所以我们要将第二个重复值重命名为“sample X2”,第一个不应该更改

我该怎么做?

我已经多次搜索但没有做过:D

谢谢

2 个答案:

答案 0 :(得分:1)

试试这个

 UPDATE user
 inner join (SELECT userid, CONCAT(username, ' Copy') as username FROM user
                    GROUP BY username HAVING COUNT(*) > 1 )t
 on t.userid = user.userid
 SET user.username = t.username

如果您有重复的用户名'MARK'

您将获得第二个'MARK Copy',根据需要更改Copy

如果您想更新每个用户名的最高ID,请使用此功能

UPDATE user
inner join (SELECT max(userid) userid , CONCAT(username, ' Copy') as username FROM user
                    GROUP BY username HAVING COUNT(*) > 1 )t
on t.userid = user.userid
SET user.username = t.username

DEMO HERE

答案 1 :(得分:0)

首先获取每秒,第三,第四......记录的ID

SELECT DISTINCT u2.id
FROM user u1
JOIN user u2 ON (u1.name = u2.name AND u1.name < u2.name)

其中user是您的表格,id是主键,name是用户名

...然后更新

UPDATE user SET name = CONCAT(name, "2") WHERE id IN ( ids )

其中ids是您通过第一步获得的ID列表。