首页 > 其他 > 详细

如何去除重复数据?

时间:2015-06-25 21:25:50      阅读:225      评论:0      收藏:0      [点我收藏+]

通常情况下,一个我们在做一个产品的时候,一开始可能由于设计考虑不周或者程序写的不够严谨,某个字段上的值产生重复了,但是又必须去掉,这个时候就稍微麻烦了一点,直接加一个 UNIQUE KEY 肯定是不行了,因为会报错。

create table yw (

id int unsigned not null auto_increment,

name char(10) not null,

extra char(10) not null,

primary key(id)

); 


select * from yw;

+----+-------+-------+

| id | name  | extra |

+----+-------+-------+

|  1 | user1 | user1 |

|  2 | user2 | user2 |

|  3 | user3 | user3 |

|  4 | user4 | user4 |

|  5 | user5 | user5 |

|  6 | user3 | user6 |

|  7 | user6 | user7 |

|  8 | user2 | user8 |

+----+-------+-------+


SELECT INTO…OUTFILE语句把表数据导出到一个文本文件中,并用LOAD DATA …INFILE语句恢复数据。但是这种方法只能导出或导入数据的内容,不包括表的结构,如果表的结构文件损坏,则必须先恢复原来的表的结构。


1、将原来的数据导出


mysql>SELECT * FROM yw INTO OUTFILE ‘/tmp/user.txt‘;


2、清空数据表


mysql>TRUNCATE TABLE `yw`;


3、创建唯一索引,


mysql> ALTER TABLE `yw` ADD UNIQUE KEY ( `name` );


4、把数据导回去,在这里,有两种选择:新的重复记录替换旧的记录,只保留最新的记录 或者是 新的记录略过,只保留最旧的记录

mysql> LOAD DATA INFILE ‘/tmp/user.txt‘ REPLACE INTO TABLE `yw`;

Query OK, 10 rows affected (0.00 sec)

Records: 8  Deleted: 2  Skipped: 0  Warnings: 0


上面是采用 REPLACE 的方式,可以看到,导入过程中删掉了两条数据,结果验证确实是 新的重复记录替换旧的记录,只保留最新的记录。


本文出自 “dba天空” 博客,请务必保留此出处http://9425473.blog.51cto.com/9415473/1665655

如何去除重复数据?

原文:http://9425473.blog.51cto.com/9415473/1665655

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!