Обновить один повторяющийся столбец в таблице

#mysql #duplicates

#mysql #дубликаты

Вопрос:

Я пытаюсь обновить повторяющиеся записи имени пользователя в таблице. Вот обновление, которое я придумал, но оно обновляет все повторяющиеся записи. Как я мог просто обновить его?

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

Я ценю любую помощь, которая может быть предоставлена. Спасибо!

Комментарии:

1. у ваших xxx_users есть первичный ключ? .. идентификатор автоинкремента??

Ответ №1:

предполагая, что в вашей таблице xxx_users есть исходный ключ, основанный на идентификаторе автоинкремента, вы могли бы попробовать

      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") 
 

Комментарии:

1. Спасибо за вашу помощь. Я получаю столбец #1054 — Unknown ‘t.id «в пункте «on», используя ваше предложение.

2. И да, в таблице есть столбец идентификатора автоинкремента.

3. Вам нужно было указать «as id» после строки select min (id).