表名: articles ,

内容重复字段:title,

准备过程:

Navicate 数据表导出sql,将导出dsql导入到本地测试库,查看title字段为varchar类型且没有索引,本地库title设置title字段普通索引(未设置索引的情况下sql查询耗时太久,等了一分钟都没出结果)

Navicate 执行操作过程:

1. 查询标题重复的数据量:

select count(*) from articles
where title in(select title from articles group by title having count(*) > 1)

2. 查询重复的数据量,排除主键id最小的重复记录

select count(*) from articles
where title in
(select title from articles group by title having count(*) > 1)
and id not in
( select min(id) from  articles  group by title  having count(* )>1)

3. 查询重复的数据的id,和 title

select id,title from articles where title in
(select title from articles group by title having count(*) > 1)
and id not in
( select min(id) from  articles  group by title  having count(* )>1)

4. 查询所有重复的记录的id兵进行字符串拼接,排除主键id最小的重复记录

select GROUP_CONCAT(id) from articles where title in(select title from articles group by title having count(*) > 1 )
and id not in
( select min(id) from  articles  group by title  having count(* )>1 )

5. 将第4步查询出来的重复数据id拼接的字符串作为条件进行数据删除

delete from articles where id in (第4步查询出的id字符串)

6. 检查本地测试库中article表内重复数据已被删除,将第5步的sql在线上执行。第四步和第五步要多次执,因为GROUP_CONCAT 一次拼接的id 是有限的,可能没有全部拼接出来

方法二:

该方法 title字段必须加索引,加索引的情况下,7W条数据删除8K条执行了49秒

DELETE
FROM表名称
WHERE重复字段名 IN (SELECTtmpa.重复字段名FROM(SELECT重复字段名FROM表名称GROUP BY重复字段名HAVINGcount(1) > 1) tmpa)
AND id NOT IN (
SELECTtmpb.minid
FROM(SELECTmin(id) AS minidFROM表名称GROUP BY重复字段名HAVINGcount(1) > 1) tmpb
)

mysql 查询重复数据并删除相关推荐

  1. MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据

    MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据 目录导航: 开发背景: 实战: 表结构如下图所示: 操作: 总结: 回到顶部 开发背景: 最近在做一个批量数据导入到MySQL数据 ...

  2. python去重复的数据_Python中mysql查询重复数据并删除重复数据

    #coding:utf-8 import mysql.connector mydb = mysql.connector.connect( host='localhost', user='root', ...

  3. MYSQL 查询重复数据

    阅读目录 MYSQL 查询重复数据 1 查询 people_no 重复的记录 2 查询 people_no 重复的记录 ,排除最小 id,如果删除改为delete from 3 查询 people_n ...

  4. 【转贴】Oracle查询重复数据与删除重复记录方法

    Oracle查询重复数据与删除重复记录方法 比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来 select p1.* from persons ...

  5. MySQL查询重复字段,及删除重复记录的方法

    MySQL查询重复字段,及删除重复记录的方法(转) Submitted by wiley on Thu, 09/03/2009 - 09:36 [教学] MySQL查询重复字段,及删除重复记录的方法 ...

  6. MySQL查询重复数据与去重

    一.创建表,插入一批示例数据 create table student(id bigint(20) auto_increment,code int(20),name varchar(255),flag ...

  7. Sql: 查询重复数据和删除重复数据

    1. 单列 select * from test where name in (select name from test group by name having count (name) > ...

  8. mysql查询重复数据,并显示所有重复数据具体信息

    本篇重点:查询重复数据并显示完整信息 首先是一个很常见的查重语句 查询重复数据,并显示完整信息 首先是一个很常见的查重语句 // uid为重复数据的条件,如果直接执行只会出现一条数据,并不能展示完整的 ...

  9. mysql sql 语句 查询重复数据 并删除重复数据 只保留一条

    **#例1:根据手机号customer_id查询所有重复的数据** SELECT* FROMaad_apply_main WHEREcustomer_id IN (SELECTcustomer_idF ...

  10. oracle 查询重复数据并且删除, 只保留一条数据

    数据库操作中,经常会因为导数据造成数据重复,需要进行数据清理,去掉冗余的数据,只保留正确的数据 一:重复数据根据单个字段进行判断 1.首先,查询表中多余的数据,由关键字段(name)来查询. sele ...

最新文章

  1. 大咖 | 斯坦福教授骆利群:为何人脑比计算机慢1000万倍,却如此高效?
  2. SIGIR阿里论文 | 可视化理解深度神经网络CTR预估模型
  3. javascript php 性能,JavaScript知识点总结之如何提高性能_javascript技巧
  4. 【转】数学与编程——求余、取模运算及其性质
  5. python计算汉明距离_有效地使用python计算汉明距离
  6. DeathRansom:一款教育目的的Python勒索软件开发平台
  7. 乐视网:公司董事、总经理、财务总监张巍因个人原因辞职
  8. python 生成excel_python 数据生成excel导出(xlwt,wlsxwrite)代码实例
  9. 「13」朴素贝叶斯Python实战:计算打喷嚏的工人患上新冠肺炎的概率
  10. IDM(Internet Download Manager)下载各类安装包(github代码、python包)、软件、视频、文档的神器,居家必备良药
  11. 计算机视觉论文-2021-03-10
  12. H264的码率控制方法(CBR, VBR, CVBR,ABR)
  13. Apache 支持ipv6 安装及常见问题
  14. ev1百家云视频解密工具、ev1视频提取工具,支持Windows、MacOS、Linux
  15. JeeSite (三)前端
  16. 实战演练-java+微信小程序实现省市区三级联动
  17. 合工大计算机调剂到经济学,合肥工业大学金砖复试调剂经验
  18. 项目设计:基于YOLO目标检测算法的安全帽/口罩/汽车/行人/交通标志...检测
  19. bzoj 2081: [Poi2010]Beads 哈希
  20. matlab l 汉字字符串,MATLAB字符串

热门文章

  1. 解决能登录微信却登不上网页的问题
  2. 胚胎干细胞研究成果集锦,目录大合集
  3. 群控云控SDK开发包(快速开发群控云控微信SCRM客服系统)
  4. 为什么Java编程语言用一种咖啡名做名字
  5. 智能环境监测产品浪涌防护整改之TVS管
  6. 《数学之美》读书笔记
  7. 拉普拉斯变换和Z变换
  8. 如何构建你的认知体系?查理芒格的100个思维模型
  9. Asp.Net Core 系列教程 (一)
  10. edge浏览器开启ie兼容模式