首页 > 数据库 >MYSQL 查找单个字段或者多个字段重复数据,清除重复数据

MYSQL 查找单个字段或者多个字段重复数据,清除重复数据

时间:2023-05-12 15:56:37浏览次数:55  
标签:count 重复 image mark person MYSQL 数据 id select

重复数据的情况分为两种:  

单个字段 数据重复  

多个字段 数据重复

所以该篇的内容就是包括   单个字段的重复数据查找  与 去重   多个字段的重复数据查找  与 去重 

第一步 先查出来所有重复的数据 

select t.id,t.subject_id,t.image_id,t.mark_person_id from dms_mark_image_info t, ( select id,subject_id,image_id,count(image_id),mark_person_id,count(mark_person_id) from dms_mark_image_info group by mark_person_id,image_id having (count(mark_person_id) > 1) and (count(image_id) > 1) ) a where t.image_id = a.image_id and t.mark_person_id = a.mark_person_id; select count(1) from dms_mark_image_info;

第二步 去重 在每一个相同记录里面保留其中一条 (id最小的一条记录)

select min(id) as id from ( select t.id,t.subject_id,t.image_id,t.mark_person_id from dms_mark_image_info t, ( select id,subject_id,image_id,count(image_id),mark_person_id,count(mark_person_id) from dms_mark_image_info group by mark_person_id,image_id having (count(mark_person_id) > 1) and (count(image_id) > 1) ) a where t.image_id = a.image_id and t.mark_person_id = a.mark_person_id

第三步 就是从涉及重复数据里面,找出除了我们需要保留的id之外的那批id, 那就是需要我们执行删除的数据id。

select b.id from ( select t.id,t.subject_id,t.image_id,t.mark_person_id from dms_mark_image_info t, ( select id,subject_id,image_id,count(image_id),mark_person_id,count(mark_person_id) from dms_mark_image_info group by mark_person_id,image_id having (count(mark_person_id) > 1) and (count(image_id) > 1) ) a where t.image_id = a.image_id and t.mark_person_id = a.mark_person_id ) b where b.id not in ( select min(id) as id from ( select t.id,t.subject_id,t.image_id,t.mark_person_id from dms_mark_image_info t, ( select id,subject_id,image_id,count(image_id),mark_person_id,count(mark_person_id) from dms_mark_image_info group by mark_person_id,image_id having (count(mark_person_id) > 1) and (count(image_id) > 1) ) a where t.image_id = a.image_id and t.mark_person_id = a.mark_person_id ) a group by a.image_id,a.mark_person_id );

第四步 执行删除重复的数据

  

delete from dms_mark_image_info where id in ( select b.id from ( select t.id,t.subject_id,t.image_id,t.mark_person_id from dms_mark_image_info t, ( select id,subject_id,image_id,count(image_id),mark_person_id,count(mark_person_id) from dms_mark_image_info group by mark_person_id,image_id having (count(mark_person_id) > 1) and (count(image_id) > 1) ) a where t.image_id = a.image_id and t.mark_person_id = a.mark_person_id ) b where b.id not in ( select min(id) as id from ( select t.id,t.subject_id,t.image_id,t.mark_person_id from dms_mark_image_info t, ( select id,subject_id,image_id,count(image_id),mark_person_id,count(mark_person_id) from dms_mark_image_info group by mark_person_id,image_id having (count(mark_person_id) > 1) and (count(image_id) > 1) ) a where t.image_id = a.image_id and t.mark_person_id = a.mark_person_id ) a group by a.image_id,a.mark_person_id ) ); 作者:三尺青锋

本文链接:https://www.cnblogs.com/zhangjiale/p/17394397.html

标签:count,重复,image,mark,person,MYSQL,数据,id,select
From: https://www.cnblogs.com/zhangjiale/p/17394397.html

相关文章

  • 【大揭秘】SQL与NoSQL数据库的优缺点全面对比!一篇文章帮助你轻松解决选择困难症!
    从分析师、工程师到IT决策者,许多人都熟悉关系数据库管理系统(rDBMS)和用于与它们交互的SQL(SQL)。虽然这些术语指的是一个几十年的范式,仍然是一个广泛使用的标准,今天的纯粹的多样性和数据库系统的深度可以令人眼花缭乱。更重要的是,不断增长的各种数据(尤其是非结构化数据数据)......
  • 网络中的数据传输模式有哪些-镭速
    数据传输模式定义了两个通信设备之间信息流的方向,也称为数据通信或定向模式,同事也规定了信息在计算机网络中从一处流向另一处的方向。在开放系统互连(OSI)层模型中,物理层专用于网络中的数据传输。它主要决定数据到达接收器系统或节点所需的数据方向。因此,在本文中,我们将了解基于......
  • docker 安装mysql
    一、拉取镜像#拉取镜像dockerpullmysql#或者dockerpullmysql:latest#执行版本dockerpullmysql:5.7#以上两个命令是一致的,默认拉取的就是latest版本的#我们还可以用下面的命令来查看可用版本:dockersearchmysql 二、查看镜像使用以下命令来查看是......
  • 数据类型
    值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。类型判断相同点:  变量类型可以使用typeof 和 instanceof......
  • mysql8.0.33的安装教程
    1、1 MySQL有四种不同的版本:community版、standard版、enterprise版和cluster版。Community版Community版是MySQL最常用的免费版本,它是基于GPL(GNU通用公共许可证)许可协议发布的。它是开源的,可以利用社区的贡献来维护和改进。有非常多的支持和帮助,可以从官方网站下载。Standar......
  • Mysql-MHA集群
    基本概念由来MHA(MasterHighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案。它由日本DeNA公司youshimaton(现就职于Facebook公司)开发。原理组成由两部分组成:MHAManager(管理节点)和MHANode(数据节点)MHAManager可单独部署在一台独立的机器上管理多个mast......
  • Mysql-Mycat集群
    读写分离基本概念MySQL虽然是世界上使用最广泛的免费数据库,但是并不能满足实际的一个需求,在高并发高可用等方面。我们主要是通过主从复制来同步数据,再通过读写分离来提升数据库的并发能力。工作原理主数据库上执行写操作,并将写操作的结果同步到所有从数据库。从数据库上只处......
  • python 保存数据为.csv文件
    1、导包importcsv2、创建或打开文件,设置文件形式csvfile=open('文件名.csv',mode='w',newline='')3、设置列名headers=['列名1','列名2','列名3',...]4、创建DictWriter对象write=csv.DictWriter(csvfile,fieldnames=headers)5、写入表头write.w......
  • Ubuntu下开启MySQL远程连接权限
    一、将用户的访问地址改为%打开终端登录mysql数据库:mysql-uroot-p查看user表mysql> usemysql;Databasechangeedmysql>selecthost,user,authentication_stringfromuser;注意此处网上很多教程写的是password,那是老版的了,现在的MySQL的mysql数据库的user表中已经没......
  • Grafana系列-统一展示-7-ElasticSearch数据源
    系列文章Grafana系列文章ElasticSearch数据源Grafana内置了对Elasticsearch的支持。你可以进行多种类型的查询,以可视化存储在Elasticsearch中的日志或指标,并使用存储在Elasticsearch中的日志事件对图表进行注释。配置ES数据源关键的几项配置如下:URL:设置你的Elasti......