#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).