Как удалить дублирующие записи в mysql

 
 

Требуется решить следующую проблему. Есть таблица. Первичный ключ id, кроме всех прочих полей есть поле name. Оказывается, что существует несколько строк с разными id, но одним и тем же name.

Понятно, что в некоторых случаях имеет место неправильный выбор первичного ключа. Причина и последствия этого оставим за гранью статьи. Задача – сделать так, чтобы была только одна строка с таким name. То есть требуется удалить дубликаты.

Колдовать это в mysql можно по разному, вплоть до временных таблиц и т.д. Однако есть способ проще – с помощью создания уникального индекса.

Итак

CREATE TABLE copy_table SELECT * FROM `таблица`;
ALTER IGNORE TABLE copy_table ADD UNIQUE ( Name );

А теперь внимательно смотрите на дубликаты. Вуаля!