Вы должны быть немного осторожны с тем, как используются данные в вашей таблице. Если это действительно таблица пользователей, вероятно, есть другие таблицы с FK, указывающими на столбец ID. В этом случае вам необходимо обновить эти таблицы для использования идентификатора, который вы выбрали для сохранения.
Если это просто отдельная таблица (таблица на нее не ссылается)
CREATE TEMPORARY TABLE Tmp (ID int);
INSERT INTO Tmp SELECT ID FROM USERS GROUP BY User;
DELETE FROM Users WHERE ID NOT IN (SELECT ID FROM Tmp);
Таблица пользователей, связанная с другими таблицами
Создание временных таблиц, включая таблицу ссылок, в которой хранятся все старые идентификаторы и соответствующие новые идентификаторы, на которые вместо этого должны ссылаться другие таблицы.
CREATE TEMPORARY TABLE Keep (ID int, User varchar(45));
CREATE TEMPORARY TABLE Remove (OldID int, NewID int);
INSERT INTO Keep SELECT ID, User FROM USERS GROUP BY User;
INSERT INTO Remove SELECT u1.ID, u2.ID FROM Users u1 INNER JOIN Keep u2 ON u2.User = u1.User WHERE u1.ID NOT IN (SELECT ID FROM Users GROUP BY User);
Просмотрите все таблицы, которые ссылаются на вашу таблицу пользователей, и обновите их столбец FK (вероятно, он называется UserID), чтобы он указывал на новый уникальный идентификатор, который вы выбрали, например, так ...
UPDATE MYTABLE t INNER JOIN Remove r ON t.UserID = r.OldID
SET t.UserID = r.NewID;
Наконец, вернитесь к таблице пользователей и удалите дубликаты, на которые больше нет ссылок:
DELETE FROM Users WHERE ID NOT IN (SELECT ID FROM Keep);
Очистите эти таблицы Tmp:
DROP TABLE KEEP;
DROP TABLE REMOVE;