Удалить дубликаты записей на 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;
Проверьте данные, затем удалите старую таблицу, если вы уверены, что все хорошо, и переименуйте новую таблицу в старую.
Затем сделайте столбец имени уникальным, чтобы вам не пришлось делать это снова.
ура