码迷,mamicode.com
首页 > 其他好文 > 详细

如何去除重复数据?

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

标签:linux

通常情况下,一个我们在做一个产品的时候,一开始可能由于设计考虑不周或者程序写的不够严谨,某个字段上的值产生重复了,但是又必须去掉,这个时候就稍微麻烦了一点,直接加一个 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

如何去除重复数据?

标签:linux

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!