【问题标题】:Update One Duplicate Column in a table更新表中的一个重复列
【发布时间】:2021-05-20 13:23:44
【问题描述】:

我正在尝试更新表中重复的用户名记录。这是我提出的更新,但这会更新所有重复记录。我怎么能只更新一个?

update xxx_users set username = CONCAT(username,"dup") where exists(
 SELECT username, COUNT(username) FROM xxx_users GROUP BY username HAVING COUNT(username) > 1);

感谢您提供的任何帮助。谢谢!

【问题讨论】:

  • 您的 xxx_users 有主键吗? .. 一个自动增量 ID??

标签: mysql duplicates


【解决方案1】:

假设您的 xxx_users 表有一个基于自动增量 ID 的主键,您可以尝试

     update xxx_users u
     inner join  (
        select min(id)  id
        from xxx_users 
        group by username
        having count(*)>1

     ) t ON t.id  = u.id
     set username = CONCAT(username,"dup") 

【讨论】:

  • 感谢您的帮助。我收到了 #1054 - Unknown column 't.id' in 'on Clause' 使用你的建议。
  • 是的,该表有一个自动增量 ID 列。
  • 您需要在 select min(id) 行之后添加一个“as id”。
猜你喜欢
  • 2021-02-05
  • 2014-03-13
  • 2020-11-13
  • 1970-01-01
  • 2017-02-02
  • 2014-02-18
  • 2019-01-09
  • 2017-06-01
  • 2016-05-30
相关资源
最近更新 更多