0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何过滤掉MySQL大批量插入的重复数据

阿铭linux 来源:CSDN 作者:CSDN 2021-08-27 11:00 次阅读

线上库有6个表存在重复数据,其中2个表比较大,一个96万+、一个30万+,因为之前处理过相同的问题,就直接拿来了上次的Python去重脚本,脚本很简单,就是连接数据库,查出来重复数据,循环删除。

emmmm,但是这个效率嘛,实在是太低了,1秒一条,重复数据大约2万+,预估时间大约在8个小时左右。。。

盲目依靠前人的东西,而不去自己思考是有问题的!总去想之前怎么可以,现在怎么不行了,这也是有问题的!我发现,最近确实状态不太对,失去了探索和求知的欲望,今天算是一个警醒,颇有迷途知返的感觉。

言归正传,下面详细介绍去重步骤

CREATE TABLE `animal` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO `pilipa_dds`。`student` (`id`, `name`, `age`) VALUES (‘1’, ‘cat’, ‘12’);INSERT INTO `pilipa_dds`。`student` (`id`, `name`, `age`) VALUES (‘2’, ‘dog’, ‘13’);INSERT INTO `pilipa_dds`。`student` (`id`, `name`, `age`) VALUES (‘3’, ‘camel’, ‘25’);INSERT INTO `pilipa_dds`。`student` (`id`, `name`, `age`) VALUES (‘4’, ‘cat’, ‘32’);INSERT INTO `pilipa_dds`。`student` (`id`, `name`, `age`) VALUES (‘5’, ‘dog’, ‘42’);

目标:我们要去掉name相同的数据

先看看哪些数据重复了

SELECT name,count( 1 ) FROM student GROUP BYNAME HAVING count( 1 ) 》 1;

输出:

name count(1) cat 2 dog 2

name为cat和dog的数据重复了,每个重复的数据有两条;

Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(1)》1)

删除全部重复数据,一条不留

直接删除会报错

DELETE FROM student WHERE NAME IN ( SELECT NAME FROM student GROUP BY NAME HAVING count( 1 ) 》 1)

报错:

1093 - You can‘t specify target table ’student‘ for update in FROM clause, Time: 0.016000s

原因是:更新这个表的同时又查询了这个表,查询这个表的同时又去更新了这个表,可以理解为死锁。mysql不支持这种更新查询同一张表的操作

解决办法:把要更新的几列数据查询出来做为一个第三方表,然后筛选更新。

DELETE FROM student WHERE NAME IN ( SELECT t.NAME FROM ( SELECT NAME FROM student GROUP BY NAME HAVING count( 1 ) 》 1 ) t)

删除表中删除重复数据,仅保留一条

在删除之前,我们可以先查一下,我们要删除的重复数据是啥样的

SELECT * FROM student WHERE id NOT IN ( SELECT t.id FROM ( SELECT MIN( id ) AS id FROM student GROUP BY `name` ) t )

啥意思呢,就是先通过name分组,查出id最小的数据,这些数据就是我们要留下的火种,那么再查询出id不在这里面的,就是我们要删除的重复数据。

开始删除重复数据,仅留一条

很简单,刚才的select换成delete即可

DELETE FROM student WHERE id NOT IN ( SELECT t.id FROM ( SELECT MIN( id ) AS id FROM student GROUP BY `name` ) t )

90万+的表执行起来超级快。

(版权归原作者所有,侵删)

来源:telami.cn/2019/mysql-removes-duplicate-data-and-keeping-only-one/

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6511

    浏览量

    87582
  • python
    +关注

    关注

    51

    文章

    4669

    浏览量

    83456
  • 脚本
    +关注

    关注

    1

    文章

    372

    浏览量

    14628

原文标题:MySQL 大批量插入,如何过滤掉重复数据?

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    电源滤波器的主要功能

    过滤高频噪声:电源中会存在各种高频噪声,这些噪声会影响设备的正常工作。电源滤波器可以通过滤波器电路过滤掉这些高频噪声,从而确保设备能够获得稳定、纯净的电源信号。
    的头像 发表于 12-25 18:18 399次阅读

    EV集团将层转移技术引入大批量制造

    NanoCleave™ 层释放系统,这是第一个采用EVG革命性NanoCleave技术的产品平台。EVG850 NanoCleave系统采用红外(IR)激光,在经过验证的大批量制造(HVM)平台上结合专门配制
    的头像 发表于 12-13 17:26 509次阅读
    EV集团将层转移技术引入<b class='flag-5'>大批量</b>制造

    线路板生产该选大批量还是小批量

    线路板生产该选大批量还是小批量
    的头像 发表于 12-13 17:22 409次阅读

    mysql数据库基础命令

    MySQL是一个流行的关系型数据库管理系统,经常用于存储、管理和操作数据。在本文中,我们将详细介绍MySQL的基础命令,并提供与每个命令相关的详细解释。 登录
    的头像 发表于 12-06 10:56 269次阅读

    python去除list中重复数据

    Python是一个强大的编程语言,提供了许多解决问题的方法和功能。其中一个常见的问题是如何去除列表中的重复数据。在本文中,我们将详细介绍Python中去除列表中重复数据的几种方法,包括使用循环
    的头像 发表于 11-21 15:49 361次阅读

    mysql数据库增删改查基本语句

    MySQL是一种关系型数据库管理系统,提供了丰富的功能和语法,来支持数据的增删改查。在本文中,将详细介绍MySQL数据库的增、删、改、查基本
    的头像 发表于 11-16 16:36 526次阅读

    mysql数据库的增删改查sql语句

    改查SQL语句,以帮助读者全面了解MySQL的基本操作。 一、增加数据MySQL数据库中,我们可以使用INSERT语句来向表中插入新的
    的头像 发表于 11-16 15:41 578次阅读

    mysql增删改查语句以及常用方法

    MySQL是一种热门的关系型数据库管理系统,广泛用于各种Web应用程序和企业级应用程序中。本文将详细介绍MySQL中的增删改查语句以及常用方法。 一、增加数据
    的头像 发表于 11-16 15:36 598次阅读

    mysql是一个什么类型的数据

    强、易于使用和管理。在本文中,我们将详尽、详实、细致地介绍MySQL的功能、优势、架构、语法等方面。 一、MySQL的功能: 数据库管理:MySQL具备创建和管理
    的头像 发表于 11-16 14:43 774次阅读

    mysql主从复制数据不一致怎么办

    不一致的原因和解决方法。 一、MySQL主从复制数据不一致的原因 网络延迟:主从之间的网络延迟导致从库在主库执行完并提交的操作之前拉取到的binlog可能不是最新的,从而导致数据不一致。 大事务:如果主库中存在大事务(比如大
    的头像 发表于 11-16 14:35 852次阅读

    单相滤波器的性能特点 单相交流滤波器的作用和用法

    单相滤波器的性能特点 单相交流滤波器的作用和用法  单相滤波器的性能特点 单相交流滤波器是一种用于去除交流电信号中杂波的电路,它能够过滤掉不需要的频率成分,使输出信号更纯净。下面是单相滤波器的性能
    的头像 发表于 10-25 15:21 819次阅读

    台积电押注硅光芯片,预计2025年进入大批量生产

    覆盖45nm至7nm,预计相关产品最早于2024年下半年获得订单,2025年将进入大批量生产阶段。   什么是硅光子技术   硅光子技术用激光束代替电子信号传输数据,是一种基于硅光子学的低成本、高速的光通信技术。英特尔实验室通过混合硅激光
    的头像 发表于 09-19 01:27 1693次阅读

    重复数据删除解决方案

    电子发烧友网站提供《重复数据删除解决方案.pdf》资料免费下载
    发表于 09-13 11:42 0次下载
    <b class='flag-5'>重复数据</b>删除解决方案

    MySQL数据库管理与应用

    MySQL数据库管理与应用 MySQL是一种广泛使用的关系型数据库管理系统,被认为是最流行和最常见的开源数据库之一。它可以被用于多种不同的应
    的头像 发表于 08-28 17:15 654次阅读

    电容为什么能过滤波?多大的电容滤掉怎样的波呢?

    电容为什么能过滤波?多大的电容滤掉怎样的波呢?
    发表于 05-15 14:32