mysql删除重复的数据保留一条从mysql数据库删除重复记录只保留其中⼀条
这两天做了⼀个调⽤第三⽅接⼝的⼩程序,因为是实时更新数据,所以请求接⼝的频率就很⾼,这样有时会出现往数据库插⼊重复的数据,对数据库造成压⼒也不⽅便管理,因为要通过原⽣sql语句,解决数据库的去重问题.在过程中遇到了⿇烦,最终解决了分享出来。
要删除重复的记录,就要先查出重复的记录,这个很容易做到
select * from cqssc group by expect having count(expect) > 1
注意:这是查出所有重复记录的第⼀条记录,需要保留,因此需要添加查询条件,查出这三条的重复记录
select id,expect from cqssc where expect in (select expect from cqssc group by expect having count(expect)>1)
and id not in(select min(id) from cqssc group by expect having count(expect)>1)
以上得到的结果就是我们需要删除的记录!
下⾯是我最初做错的地⽅,既然要删除,可能都会想到这样很简单了
报错了在Mysql中是不能删除查询出来的记录的,这⾥很容易错,当时在这⾥纠结了很久,⽽是要通过⼀张临时表来解决。
delete from cqssc where id in (select id from (select id from cqssc where expect in
(select expect from cqssc group by expect having count(expect)>1) and id not in
(select min(id) from cqssc group by expect having count(expect)>1)) as tmpresult)
再运⾏试试
删除成功,最后再查询⼀下看是否还有重复记录
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论