удалить дубликаты записей на MySQL? - PullRequest
1 голос
/ 31 марта 2011

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

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

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

Ответы [ 2 ]

3 голосов
/ 31 марта 2011
DELETE  t2
FROM    topics t1
JOIN    topics t2
ON      t2.name = t1.name
        AND t2.id < t1.id
0 голосов
/ 31 марта 2011

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

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

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

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

Приветствия

...