mysql数据库删除重复数据

1年前 5381次浏览

由于没有对数据库做索引,发现搜索表格好多重复数据,看着很是不舒服而且占用内存。下面介绍一下我删除表中重复数据的思路。

我的大概思路是:先按某一个字段(这个字段不重复数据)读取该表并创建一个临时表tmp,再将原来那个表清空,再将这个临时表里面的数据插入原始表中,再把临时表删除。

首先:读取不重复数据创建临时表tmp

CREATE TABLE tmp SELECT * FROM table GROUP BY (title);

上面的sql就是从table表中按title字段读取非重复数据创建临时表tmp,group by()中的字段可以是多个。这样做这个tmp里面的数据便是table表中所有的非重复数据。

接着:清空table表。

TRUNCATE table;

使用TRUNCATE清空表有个好处就是会把自增自段重置。

再来:将上面创建的tmp表中的数据插入原来的table表中。

insert into table (title,viewnum,countnum,istop,source,etime) select title,viewnum,countnum,istop,source,etime from tmp;

通过insert into将tmp表中的数据插入table表中。

这里需要注意一件事,insert into table (字段1,字段2...)不需要写values直接再用select选取tmp表中的对应字段。参看我上面的sql意思就是从tmp表里面将title等字段的值一一对应的插入table表中。注意:自增字段不用填写,要是填了自增字段,也可以正常运行,只是会造成自增字段并不是自增的而是指定的,所以还是不填自增字段的好。

最后:删除tmp表。

DROP TABLE tmp;

这个时侯再看table表就会发现不仅没有重复字段了,而且自增字段又从1开始了。

简单4条SQL语句处理表中重复数据,比较适用。

相关评论
暂无相关评论...
发表评论
评论说明:

1、评论暂仅只持纯文字评论。

2、请不要发表与内容无关的评论。

3、评论需要经由审核才能显示出来。

4、评论姓名与链接无要求,只要评论内容符合便可审核通过。