我的表“user”的列为“username”
由于合并的2个数据库,我们有许多重复的用户名,所以我们要将第二个重复值重命名为“sample X2”,第一个不应该更改
我该怎么做?
我已经多次搜索但没有做过:D
谢谢
答案 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
答案 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列表。