题记

本文主要介绍Mysql数据库表中,如何删除相同索引值、更新日期较早的记录行。

1、相同记录的由来

以Mysql为例,根据表的设计原则,表中不可能存在两条完全相同的记录。

第一范式(1NF):字段值具有原子性,不能再分(所有关系型数据库系统都满足第一范式);
例如:姓名字段,其中姓和名是一个整体,如果区分姓和名那么必须设立两个独立字段;第二范式(2NF):一个表必须有主键,即每行数据都能被唯一的区分;
(备注:必须先满足第一范式;) 第三范式(3NF):一个表中不能包涵其他相关表中非关键字段的信息,即数据表不能有沉余字段;( 备注:必须先满足第二范式;)

但是,在我们实际的业务系统中,很大可能会存在,除了主键外,剩余列完全相同或部分核心字段完全相同的数据在同一个库表中存在。

举例,如下截图所示:

该表中,主键为第1列ID和第2列Wid,两行数据的仅更新日期和标记列(2,3)不同,剩余列完全相同。
随着记录的增多,我们检索的需要,仅需要将Mid相同的记录保留住更新日期最新的一条记录。

2、如何仅保留最新日期的一条记录,删除其余日期较早的相同Wid的记录?

以下是删除操作sql的分解操作步骤。

步骤1:找出重复的记录。

select wid from   search_dispos_copy group by wid having count(wid) > 1;

步骤2:找出重复记录中,区分标志字段的最大值。

select max(update_time) from   search_dispos_copy group by article_id having count(wid )>1;

步骤3:查询出重复记录的ID信息。

select id, wid, update_time from search_dispos_copy
where wid in (select wid from search_dispos_copy group by wid having count(wid) > 1)
and update_time not in (select max(update_time) from search_dispos_copy group by wid having count(wid )>1);
order by wid;

步骤4:删除对应的ID记录。

整理出id信息,以逗号分隔,id是唯一值

1)删除空行操作

sed -i ‘/^$/d’ ./id_list.txt

2)换行符转化为逗号

cat id_list.txt | tr “\n” “,” > id_list_a.txt

3)删除操作

delete from msearch_dispose_articles_copy where id in ();
()里面放入4.2中 list_a存储的记录即可。

3、讨论

为了标注一条记录的状态,设计的时候我们会关联库表中的一条记录。但这条记录在库表中是唯一的,标注状态的改变体现在表中是相同记录行的某一特征列的改变。
因此,我们要做的是更新记录,而不是再次插入操作。
这样,也就避免了出现1中的“相同记录”。

20170309 22:18 于家中床前

作者:铭毅天下
转载请标明出处,原文地址:
http://blog.csdn.net/laoyang360/article/details/60976978
如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!

解决Mysql中删除重复记录的问题相关推荐

  1. MYSQL中删除重复记录

    这是个老生常谈的话题,我们在sql中删除一条重复的记录我们可以[以用户表user为例,包含id,name,value三个字段信息]: delete from 表 where id not in (se ...

  2. mysql语句中怎么去重复_mysql中删除重复记录sql语句

    在sql中我们经常会碰到有重复的一些数据,下面我来介绍在mysql中删除重复记录的多种方法,有需要的朋友可参考参考. 删除重复记录方法一: 1. 新建一个临时表 代码如下 复制代码 create ta ...

  3. mysql scrapy 重复数据_MySQL大数据量表中删除重复记录

    MySQL大数据量表中删除重复记录 最近工作中需要抓取大量新闻,抓取的数据中由于一些原因存在一些重复数据,而整个数据表的记录数接近10万条,大小接近1个G,又在我自己的渣渣本本上,查询速度十分不理想, ...

  4. 在 MySQL 数据库中删除重复记录的步骤

    在 MySQL 数据库中删除重复记录的步骤 当我们在处理数据库中的数据时,有时候会出现重复记录的情况,这些重复记录会影响数据的正确性,需要将其删除.下面是在 MySQL 数据库中删除重复记录的步骤: ...

  5. 在MySQL中删除重复的行

    本文翻译自:Remove duplicate rows in MySQL I have a table with the following fields: 我有一个包含以下字段的表: id (Uni ...

  6. mysql查询删除重复记录查询_mysql怎么查询和删除重复记录

    查找所有重复标题的记录: SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > ...

  7. 在SQL中删除重复记录(多种方法) [转]

    学习sql有一段时间了,发现在我建了一个用来测试的表(没有建索引)中出现了许多的重复记录.后来总结了一些删除重复记录的方法,在Oracle中,可以通过唯一rowid实现删除重复记录:还可以建临时表来实 ...

  8. mysql用一条sql语句删除重复记录_mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句...

    正好想写一条删除重复语句并保留一条数据的SQL,网上查了一部分资料写的很详细,但还是在这里写下自己的理解,以遍后续学习 .如下: 表字段和数据: SQL语句: DELETE FROM`user`WHE ...

  9. MySQL中删除重复数据

    2019独角兽企业重金招聘Python工程师标准>>> 参考网页 SQL删除重复数据只保留一条 https://blog.csdn.net/anya/article/details/ ...

最新文章

  1. CSS------如何让大小不一样的div中心对齐
  2. 安装 openSUSE Leap 42.1 之后要做的 8 件事
  3. 问题 D: Search Problem
  4. Vsphere日记01.ESXi5.5.install
  5. python os详解
  6. 打开pdf文件提示文件过大_如何把pdf文件进行分割?拆分pdf文件的方法分享
  7. php数组中去掉空格,php数组去除空格的方法
  8. Android Patcher应用增量更新(App补丁式更新,无需下载整个apk)
  9. 为civil3D2018 添加snoop DB工具
  10. 经典的面板数据集(R语言包plm)
  11. 2-折腾python:继续一些瞎打印的小把戏
  12. 【Spring boot 常见问题】
  13. 水星USB无线网卡mw150us苹果macOS系统驱动成功
  14. VBA每日一练(4),补充VBA的基础语句知识,基本控制结构,I/O基础
  15. Python 数据分析 —— Numpy
  16. 印度人的1919乘法
  17. 秦皇岛集训,ACM比赛第一场
  18. (4)FPGA开发工具介绍(第1天)
  19. 炎炎夏日,快用代码下场雨
  20. k8s containerd对接harbor私有仓库

热门文章

  1. 非零基础自学计算机操作系统 第1章 操作系统概述 习题一
  2. 第一天、python之路
  3. SimCC: a Simple Coordinate Classification Perspective for Human Pose Estimation 阅读笔记
  4. “创业吃过饼,这些面试题你会吗
  5. 【化解数据结构】从这里开启数据结构和算法
  6. 那些从技术岗转变到管理岗,可能踩过的坑
  7. 产品FAQ(常见问题)文档模版
  8. 窗口函数(Window Function)
  9. Codeforces Round #574 (Div. 2) D2. Submarine in the Rybinsk Sea (hard edition)
  10. yeelink服务器稳定吗,一步步教你使用服务器yeelink远程监控