删除mysql上的重复记录?

删除mysql上的重复记录?,mysql,duplicates,no-duplicates,Mysql,Duplicates,No Duplicates,我有一个mysql查询,用于查找每个主题的重复项和发生次数: SELECT name, COUNT(name) AS NumOccurrences FROM topics GROUP BY name HAVING ( COUNT(name) > 1 ) 但我想做的是删除所有找到的重复项。我只希望每个主题有一个唯一的名称,没有重复!!谢谢我会将所有唯一的条目复制到一个新表中: CREATE TABLE new_table as SELECT * FROM old_table WHERE

我有一个mysql查询,用于查找每个主题的重复项和发生次数:

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

但我想做的是删除所有找到的重复项。我只希望每个主题有一个唯一的名称,没有重复!!谢谢

我会将所有唯一的条目复制到一个新表中:

CREATE TABLE new_table as
SELECT * FROM old_table WHERE 1 GROUP BY unique_column_name;
检查数据,确定一切正常后删除旧表,并将新表重命名为旧表

然后使“名称”列唯一,这样就不必再次执行此操作

干杯

删除t2
来自主题t1
加入主题t2
在t2.name=t1.name上
t2.id
表中的主键是什么?id是主键!!抱歉,忘了提及:))的可能重复项请从标记中删除PHP。@Sachin:这个问题是关于一个具有相同行的表的。这个类似,它有主键:不能保证未聚合列中的结果属于相同的记录。
DELETE  t2
FROM    topics t1
JOIN    topics t2
ON      t2.name = t1.name
        AND t2.id < t1.id