霜天部落 | 关注LAMP高性能、高并发架构的设计与研究

mysql 表删除重复记录

今天遇到了一个问题,就是数据库表中有大量的重复记录,但是我们要得到的是使每条记录保持唯一。这个我研究了一下,可以使用下面几种办法解决mysql 表删除重复记录:

删除重复记录方法一:

1. 新建一个临时表

create table tmp as select * from youtable group by  name(name为不希望有重复的列)

2. 删除原来的表

drop table youtable

3. 重命名表

alter table tmp rename youtable

但是这个方法有个问题,由临时表转变过来的最终表,其表结构会和原来的不一致,需要手工更改。这个问题,待解决。

删除重复记录方法二:

1. 新建一个临时表

CREATE TABLE tmp AS SELECT * FROM youtable GROUP BY name(name为不希望有重复的列)

2. 清空原来的表

TRUNCATE TABLE youtable

3. 把临时表插入到youtable

INSERT INTO tablename SELECT  * FROM temp

4. 删除临时表

DROP TABLE  temp

删除重复记录方法三:

delete table where ID not in(select min(ID) from table group by name(name:重复的字段))

以上三个方法都可以实现,供大家选择。