怎么删除重复的Mysql数据?
5个回答
2019-10-22
展开全部
MYSQL里有五百万数据,但大多是重复的,真实的就180万,于是想怎样把这些重复的数据搞出来,在网上找了一圈,好多是用NOT IN这样的代码,这样效率很低,自己琢磨组合了一下,找到一个高效的处理方式,用这个方式,五百万数据,十来分钟就全部去除重复了,请各位参考。
第一步:从500万数据表data_content_152里提取出不重复的字段SFZHM对应的ID字段到TMP3表
1 create table tmp3 as select min(id) as col1 from data_content_152 group by SFZHM;
第二步:创建新表RES
1234 CREATE TABLE `res` (`id` int(11),`sfz` char(20)) ENGINE=MyISAM;
第三步:把TMP3表ID对应到data_content_152里需要提取的数据添加到RES表的SFZ字段
1 INSERT INTO res (sfz) SELECT sfzhm FROM data_content_152,tmp3 where data_content_152.id=tmp3.col1
至此,就在MYSQL里实现了,给数据表data_content_152完全删除重复数据,把去重复后的数据导入到RES表。
第一步:从500万数据表data_content_152里提取出不重复的字段SFZHM对应的ID字段到TMP3表
1 create table tmp3 as select min(id) as col1 from data_content_152 group by SFZHM;
第二步:创建新表RES
1234 CREATE TABLE `res` (`id` int(11),`sfz` char(20)) ENGINE=MyISAM;
第三步:把TMP3表ID对应到data_content_152里需要提取的数据添加到RES表的SFZ字段
1 INSERT INTO res (sfz) SELECT sfzhm FROM data_content_152,tmp3 where data_content_152.id=tmp3.col1
至此,就在MYSQL里实现了,给数据表data_content_152完全删除重复数据,把去重复后的数据导入到RES表。
2019-10-22 · 宵云网为分享正能量文章
关注
展开全部
MySQL数据库中查询重复数据
Select * From employee group by emp_name having count (*)>1;
Mysql 查询可以删除的重复数据
Select t1.* From employee t1 Where (t1.emp_name) in (Select t4.emp_name From (Select t2.emp_name From employee t2 group by t2.emp_name having count(*)>1) t4) And t1.emp_id not in (Select t5.emp_id From (Select min(t3.emp_id) as emp_id From employee t3 group by t3.emp_name having count(*)>1) t5);
Mysql 删除重复的数据
Delete t1 From employee t1 Where (t1.emp_name) in (Select t4.emp_name From (Select t2.emp_name From employee t2 group by t2.emp_name having count(*)>1) t4) And t1.emp_id not in (Select t5.emp_id From (Select min(t3.emp_id) as emp_id From employee t3 group by t3.emp_name having count(*)>1) t5);
Select * From employee group by emp_name having count (*)>1;
Mysql 查询可以删除的重复数据
Select t1.* From employee t1 Where (t1.emp_name) in (Select t4.emp_name From (Select t2.emp_name From employee t2 group by t2.emp_name having count(*)>1) t4) And t1.emp_id not in (Select t5.emp_id From (Select min(t3.emp_id) as emp_id From employee t3 group by t3.emp_name having count(*)>1) t5);
Mysql 删除重复的数据
Delete t1 From employee t1 Where (t1.emp_name) in (Select t4.emp_name From (Select t2.emp_name From employee t2 group by t2.emp_name having count(*)>1) t4) And t1.emp_id not in (Select t5.emp_id From (Select min(t3.emp_id) as emp_id From employee t3 group by t3.emp_name having count(*)>1) t5);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
mysql去重需要需要创建临时表,用distinct或者group by后的数据添加到临时表,然后清空原表将临时表数据插入原表;
如果你知道有几条重复的,可以在delete后面接limit来删除重复的数据
如果你知道有几条重复的,可以在delete后面接limit来删除重复的数据
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
猜测一下,你的数据库没有建立索引,所以导致往表里插入数据的时候,有重复数据,如果确定重复数据的所有字段都一样,告诉你一个方法删除重复的。
创建一个临时表,表结构与数据表一致,比如原表叫table,临时表叫table_tmp,则
insert into table_tmp select distinct (*) from table
这样做,临时表中就是去掉重复的数据了,然后将table表清空,再将临时表的数据插入到table中,就达到去掉重复的目的了。
创建一个临时表,表结构与数据表一致,比如原表叫table,临时表叫table_tmp,则
insert into table_tmp select distinct (*) from table
这样做,临时表中就是去掉重复的数据了,然后将table表清空,再将临时表的数据插入到table中,就达到去掉重复的目的了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2020-01-06 · 百度认证:云南新华电脑职业培训学校官方账号
云南新华电脑学校
云南新华电脑学校是经云南省教育厅批准成立的省(部)级重点计算机专业学校,采用三元化管理模式,教学设备先进,师资雄厚学生毕业即就业,学院引进了电商企业入驻,创建心为电商创业园区,实现在校即创业
向TA提问
关注
展开全部
方法/步骤:
1.先看下我们的表数据,有一些数据是重复的。
2.要查找重复数据,我们可以使用mysql里的having语句。
3.执行这个语句后,我们可以看到现在的结果里显示的就是表中重复数据的字段。
4.要删除这些重复的数据,我们找出这些数据的ID,在select语句里,添加id字段,使用m...
5.得到重复数据的id为8和9。
1.先看下我们的表数据,有一些数据是重复的。
2.要查找重复数据,我们可以使用mysql里的having语句。
3.执行这个语句后,我们可以看到现在的结果里显示的就是表中重复数据的字段。
4.要删除这些重复的数据,我们找出这些数据的ID,在select语句里,添加id字段,使用m...
5.得到重复数据的id为8和9。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询