zoukankan      html  css  js  c++  java
  • 从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)

     再运行试试

    删除成功,最后再查询一下看是否还有重复记录

  • 相关阅读:
    C# 通过Attribute制作的一个消息拦截器
    Newtonsoft.Json高级用法
    这些年,我收集的JavaScript代码(一)
    Storm整体架构分析
    Worker的内部工作原理
    Storm源码分析
    Storm集群部署
    Storm 官方文档翻译 --- 消息的可靠性保障
    [转] 如何快速掌握一门新技术/语言/框架
    小狗钱钱读书笔记
  • 原文地址:https://www.cnblogs.com/jdbeyond/p/8157224.html
Copyright © 2011-2022 走看看