Вы должны быть немного осторожны с тем, как используются данные в вашей таблице. Если это действительно таблица пользователей, скорее всего, будут другие таблицы с FK, указывающими на столбец идентификаторов. В этом случае вам необходимо обновить эти таблицы, чтобы использовать идентификатор, который вы выбрали для сохранения.
Если это просто отдельная таблица (таблица не ссылаться на него)
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);
таблица пользователей связан с других таблиц
Создания временных таблиц, включая таблицу ссылок, которая содержит все старое id и соответствующие новые идентификаторы, которые должны ссылаться на другие таблицы.
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);
Go через любые таблицы, которые ссылаются на таблицу пользователей и обновлять их столбец 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;
Возможно, стоит рассмотреть другие подобные вопросы здесь http://stackoverflow.com/search?q=%5Bsql%5D+%5Bduplicates%5D+delete – Kristen