Предполагая, что у вас есть некоторый первичный ключ в таблице, например, идентификатор с автоматическим приращением, вы можете сделать следующее:
UPDATE group
SET names = CONCAT(names,' Copy 1')
WHERE ID IN
(
SELECT MAX(ID)
FROM group
GROUP BY names
HAVING count(*) > 1
);
Чтобы объяснить, он найдет что-нибудь с дубликатом, возьмитеМаксимальный идентификатор для чего-либо в этом наборе, и добавьте «копия 1» в конце этого.У вас могут остаться дубликаты, если у вас были определенные имена 3 или более раз.Просто запустите его снова, на этот раз с «копировать 2» вместо «копировать 1».Продолжайте повторять этот процесс, пока не избавитесь от всех дубликатов.
Обновление.Чтобы позаимствовать идею у @Yahia и использовать UUID, вы можете сделать следующее, если хотите сделать все это одним запросом.
UPDATE group
SET names = CONCAT(names, CONCAT ( ' Copy ', UUID_SHORT() ) )
WHERE
ID NOT IN
(
SELECT MIN(ID)
FROM group
GROUP BY names
HAVING count(*) > 1
) AND
ID IN
(
SELECT ID
FROM group AS G1
INNER JOIN group AS G2
ON G1.names = G2.names AND G1.ID <> G2.ID
);