sql语句去除重复数据记录的例子

发布时间:2020-10-08编辑:脚本学堂
本文介绍了mysql中删除重复记录的方法,用sql语句去除重复数据,需要的朋友参考下。

如何用sql语句删除数据库中的重复记录

mysql里有五百万数据,但大多是重复的,真实的就180万,于是想怎样把这些重复的数据搞出来,网上提供的方法好多是用not in这样的代码,这样效率很低。
找到一个高效的处理方式,用这个方式,五百万数据,十来分钟就全部去除重复了,请各位参考。
 

相关阅读:

第一步:从500万数据表data_content_152里提取出不重复的字段SFZHM对应的ID字段到TMP3表,sql语句如下:
 

复制代码 代码示例:
create table tmp3 as select min(id) as col1 from data_content_152 group by SFZHM;

第二步:创建新表RES
 

复制代码 代码示例:

CREATE TABLE `res` (

`id` int(11),
`sfz` char(20)
) ENGINE=myisam;

第三步:把TMP3表ID对应到data_content_152里需要提取的数据添加到RES表的SFZ字段
 

复制代码 代码示例:
INSERT INTO res (sfz) SELECT sfzhm FROM data_content_152,tmp3 where data_content_152.id=tmp3.col1

至此,就在mysql数据库中实现了为数据表data_content_152完全删除重复数据,把去重复后的数据导入到res表。

SQL查询及删除重复记录的方法(sql语句大全
查数据:
 

复制代码 代码示例:
select count(num), max(name) from student group by num having count(num) > 1 --列出重复的记录数,并列出他的name属性
select * from tablename where id in (select id from tablename group by id having count(id) > 1)
group by id having count(id) >1 --按id分组后找出表中id列重复,即出现次数大于一次,一般会列出最小数的那个。

删数据:
 

复制代码 代码示例:
delete from tablename group by id having count(id) >1

以上删除了所有重复数据。

有时需要把重复的保留1条,语句如下:
 

复制代码 代码示例:
delete from tablename where id in (select id from tablename group by id having count(id) > 1) and rowid not in (select min(rowid) from  tablename  group by id  having count(id )>1)