加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql应用MySQL 删除数据库中重复数据方法小结

发布时间:2020-12-12 02:40:22 所属栏目:MySql教程 来源:网络整理
导读:《Mysql应用MySQL 删除数据库中重复数据方法小结》要点: 本文介绍了Mysql应用MySQL 删除数据库中重复数据方法小结,希望对您有用。如果有疑问,可以联系我们。 刚开始,根据我的想法,这个很简单嘛,上sql语句 MYSQL必读 delete from zqzrdp where tel in (sel

《Mysql应用MySQL 删除数据库中重复数据方法小结》要点:
本文介绍了Mysql应用MySQL 删除数据库中重复数据方法小结,希望对您有用。如果有疑问,可以联系我们。

刚开始,根据我的想法,这个很简单嘛,上sql语句MYSQL必读

delete from zqzrdp where tel in (select min(dpxx_id) from zqzrdp group by tel having count(tel)>1);

执行,报错!!~!~MYSQL必读

MYSQL必读

异常意为:你不能指定目标表的更新在FROM子句.傻了,MySQL 这样写,不行,让人郁闷.MYSQL必读

难倒只能分步操作,蛋疼MYSQL必读

以下是网友写的,同样是坑爹的代码,我机器上运行不了.MYSQL必读

1. 查询需要删除的记录,会保留一条记录.MYSQL必读

select a.id,a.subject,a.RECEIVER from test1 a left join (select c.subject,c.RECEIVER,max(c.id) as bid from test1 c where status=0 GROUP BY RECEIVER,SUBJECT having count(1) >1) b on a.id< b.bid where a.subject=b.subject and a.RECEIVER = b.RECEIVER and a.id < b.bid

2. 删除重复记录,只保留一条记录.注意,subject,RECEIVER 要索引,否则会很慢的.MYSQL必读

delete a from test1 a,(select c.subject,SUBJECT having count(1) >1) b where a.subject=b.subject and a.RECEIVER = b.RECEIVER and a.id < b.bid;

3. 查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断MYSQL必读

select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

4. 删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录MYSQL必读

delete from people where peopleId in (select peopleId from people group by peopleId  having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)

5.删除表中多余的重复记录(多个字段),只留有rowid最小的记录MYSQL必读

delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

看来想偷懒使用一句命令完成这个事好像不太显示,还是老老实实的分步处理吧,思路先建立复制一个临时表,然后对比临时表内的数据,删除主表里的数据MYSQL必读

alter table tableName add autoID int auto_increment not null; 
create table tmp select min(autoID) as autoID from tableName group by Name,Address; 
create table tmp2 select tableName.* from tableName,tmp where tableName.autoID = tmp.autoID; 
drop table tableName; 
rename table tmp2 to tableName; 

《Mysql应用MySQL 删除数据库中重复数据方法小结》是否对您有启发,欢迎查看更多与《Mysql应用MySQL 删除数据库中重复数据方法小结》相关教程,学精学透。编程之家PHP学院为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读