mysql 查询重复数据并删除
表名: 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 查询重复数据并删除相关推荐
- MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据
MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据 目录导航: 开发背景: 实战: 表结构如下图所示: 操作: 总结: 回到顶部 开发背景: 最近在做一个批量数据导入到MySQL数据 ...
- python去重复的数据_Python中mysql查询重复数据并删除重复数据
#coding:utf-8 import mysql.connector mydb = mysql.connector.connect( host='localhost', user='root', ...
- MYSQL 查询重复数据
阅读目录 MYSQL 查询重复数据 1 查询 people_no 重复的记录 2 查询 people_no 重复的记录 ,排除最小 id,如果删除改为delete from 3 查询 people_n ...
- 【转贴】Oracle查询重复数据与删除重复记录方法
Oracle查询重复数据与删除重复记录方法 比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来 select p1.* from persons ...
- MySQL查询重复字段,及删除重复记录的方法
MySQL查询重复字段,及删除重复记录的方法(转) Submitted by wiley on Thu, 09/03/2009 - 09:36 [教学] MySQL查询重复字段,及删除重复记录的方法 ...
- MySQL查询重复数据与去重
一.创建表,插入一批示例数据 create table student(id bigint(20) auto_increment,code int(20),name varchar(255),flag ...
- Sql: 查询重复数据和删除重复数据
1. 单列 select * from test where name in (select name from test group by name having count (name) > ...
- mysql查询重复数据,并显示所有重复数据具体信息
本篇重点:查询重复数据并显示完整信息 首先是一个很常见的查重语句 查询重复数据,并显示完整信息 首先是一个很常见的查重语句 // uid为重复数据的条件,如果直接执行只会出现一条数据,并不能展示完整的 ...
- mysql sql 语句 查询重复数据 并删除重复数据 只保留一条
**#例1:根据手机号customer_id查询所有重复的数据** SELECT* FROMaad_apply_main WHEREcustomer_id IN (SELECTcustomer_idF ...
- oracle 查询重复数据并且删除, 只保留一条数据
数据库操作中,经常会因为导数据造成数据重复,需要进行数据清理,去掉冗余的数据,只保留正确的数据 一:重复数据根据单个字段进行判断 1.首先,查询表中多余的数据,由关键字段(name)来查询. sele ...
最新文章
- 大咖 | 斯坦福教授骆利群:为何人脑比计算机慢1000万倍,却如此高效?
- SIGIR阿里论文 | 可视化理解深度神经网络CTR预估模型
- javascript php 性能,JavaScript知识点总结之如何提高性能_javascript技巧
- 【转】数学与编程——求余、取模运算及其性质
- python计算汉明距离_有效地使用python计算汉明距离
- DeathRansom:一款教育目的的Python勒索软件开发平台
- 乐视网:公司董事、总经理、财务总监张巍因个人原因辞职
- python 生成excel_python 数据生成excel导出(xlwt,wlsxwrite)代码实例
- 「13」朴素贝叶斯Python实战:计算打喷嚏的工人患上新冠肺炎的概率
- IDM(Internet Download Manager)下载各类安装包(github代码、python包)、软件、视频、文档的神器,居家必备良药
- 计算机视觉论文-2021-03-10
- H264的码率控制方法(CBR, VBR, CVBR,ABR)
- Apache 支持ipv6 安装及常见问题
- ev1百家云视频解密工具、ev1视频提取工具,支持Windows、MacOS、Linux
- JeeSite (三)前端
- 实战演练-java+微信小程序实现省市区三级联动
- 合工大计算机调剂到经济学,合肥工业大学金砖复试调剂经验
- 项目设计:基于YOLO目标检测算法的安全帽/口罩/汽车/行人/交通标志...检测
- bzoj 2081: [Poi2010]Beads 哈希
- matlab l 汉字字符串,MATLAB字符串