【mysql】删除重复数据只保留一条
来源:互联网 发布:网络教育花钱能包过吗 编辑:程序博客网 时间:2024/04/28 21:25
在SWQA平台中,BUG数据写入数据库的逻辑是每天进行读写一次,若该天是第二次进行写入该天的数据,则应将该天的数据首先删除后再进行写入
但是出现了一个BUG,数据未删除时已写入数据
需要把数据库中重复的数据删除
删除表中多余的重复记录,重复记录是根据单个字段(abb)来判断,只留有resourceid最小的记录
DELETEFROM dataplatform_bugdata_orgWHERE abb IN ( SELECT abb FROM dataplatform_bugdata_org GROUP BY abb HAVING count(abb) > 1 )AND resourceid NOT IN ( SELECT min(resourceid) FROM dataplatform_bugdata_org GROUP BY abb HAVING count(resourceid) > 1)
执行时,出现问题
[Err] 1093 - You can't specify target table 'dataplatform_bugdata_org' for update in FROM clause
不能先select出同一表中的某些值,再update这个表(在同一语句中)
故需要建立一个临时的表,然后再进行删除
CREATE TABLE tmp AS SELECT min(resourceid) AS col1FROM dataplatform_bugdata_legacy_orgWHERE thedate = '2017-07-10'GROUP BY abb;DELETEFROM dataplatform_bugdata_legacy_orgWHERE resourceid NOT IN (SELECT col1 FROM tmp);DROP TABLE tmp;
这个时候又发现另外一个问题:
该abb有四个数据,其中两对重复数据,一组是newbug,一个是closebug,如果min(resourceid)
那么只剩下一个数据,这个和需要删除的需求不符合,只是需要删除newbug中和closebug中重复的数据
如何解决呢?
- 分别删除不同类型的type数据
CREATE TABLE tmp AS SELECT min(resourceid) AS col1FROM dataplatform_bugdata_legacy_orgWHERE thedate = '2017-07-10' AND type = 'newbug'GROUP BY abb;
- 分组多个条件判断
SELECT min(resourceid),abb,typeFROM dataplatform_bugdata_orgWHERE thedate = '2017-07-10'GROUP BY abb,type
两种方法都能解决删除重复数据的问题
阅读全文
1 0
- mysql删除重复数据只保留一条
- mysql 删除重复数据只保留一条
- mysql 删除重复数据只保留一条
- mysql 删除重复数据只保留一条
- mysql删除重复数据只保留一条
- 【mysql】删除重复数据只保留一条
- mysql 删除重复数据只保留一条记录
- mysql删除重复记录只保留一条数据
- MySQL删除重复数据行,只保留一条
- mysql 删除重复数据只保留一条sql
- MySQL中删除重复数据只保留一条
- MySQL中删除表中重复数据,只保留一条
- MySQL中删除重复数据只保留一条
- MySQL中删除重复数据只保留一条
- mysql删除重复数据只保留id最大一条记录
- MySQL中删除重复数据只保留一条
- mysql 删除表中重复的数据,只保留一条
- MySQL中删除重复数据只保留一条
- textarea如何实现高度自适应?
- Android音频系统之音频框架
- 浅谈前端移动端页面开发(布局篇)
- 38-数字在排序数组中出现的次数
- 数据结构之二叉树
- 【mysql】删除重复数据只保留一条
- css :before,:after伪元素的理解和妙用
- 基于RxJava2的RxBus,打造属于你自己的EventBus
- recycleview基础操作
- 二次上线之应收事务处理类型设置问题
- 将优质资产数字化:他们想实现全球化的资产配置
- 软件架构模式
- Hadoop研究(一)安装与部署
- Web基础之自定义JSP标签