Удалить дубликаты записей на MySQL?

У меня есть этот запрос MySQL, который находит дубликаты и количество вхождений для каждой темы:

SELECT name, 
 COUNT(name) AS NumOccurrences
FROM topics
GROUP BY name
HAVING ( COUNT(name) > 1 )

но я хочу удалить все найденные дубликаты. Я хочу только одно уникальное имя для каждой темы, без дубликатов! Спасибо

2 ответа

Решение
DELETE  t2
FROM    topics t1
JOIN    topics t2
ON      t2.name = t1.name
        AND t2.id < t1.id

Я бы скопировал все уникальные записи в новую таблицу:

CREATE TABLE new_table as
SELECT * FROM old_table WHERE 1 GROUP BY unique_column_name;

Проверьте данные, затем удалите старую таблицу, если вы уверены, что все хорошо, и переименуйте новую таблицу в старую.

Затем сделайте столбец имени уникальным, чтобы вам не пришлось делать это снова.

ура

Другие вопросы по тегам