MySQL去重的方法整理
作者:lqh 发布时间:2024-01-27 07:04:42
MySQL去重的方法整理
【初级】有极少的重复行
使用distinct查出来,然后手动一行一行删除。
【中级】按照单个字段的重复去重
例如:对id字段去重
使用方法:获取id的重复字段的值,利用相同id字段所在的行中,比较出数据不同的字段,删除 除了最小(或最大)的字段所在的该行之外的所有重复的行。一般使用主键来比较,因为主键的值一定是唯一值,绝对不相同。
id name
1 a
1 b
2 c
2 a
3 c
结果:
id name
1 a
2 a
操作:
delete from a_tmp
where id in (select * from (select b.id from a_tmp b group by b.id having count(b.id) >1) bb)
and name not in (select * from (select min(a.name) from a_tmp a GROUP BY a.id having count(a.id) >1) aa);
注意:
上述加粗并绿色的字,必须加别名,必须使用select * from (……)这样的格式,否则会报错:
[Err] 1093 - You can't specify target table 'a_tmp' for update in FROM clause
【高级】按多个字段的重复来去重
例如:对id,name相同的去重,即:对id,name都相同的算作重复行,对id相同而name不同的算作不重复行
使用方法:和单个字段相似,一般使用主键来比较,因为主键的值一定是唯一值。
id name rowid
1 a 1
1 a 2
1 b 3
2 b 4
2 b 5
3 c 6
3 d 7
结果:
id name rowid
1 a 1
1 b 3
2 b 4
3 c 6
3 d 7
操作:
第一种:
delete from a_tmp
where (id,name) in (select * from (select b.id,b.name from a_tmp b group by b.id,b.name having count(b.id) >1) bb)
and rowid not in (select * from (select min(a.rowid) from a_tmp a group by a.id,a.name having count(a.id) >1) aa);
第二种:
将id和name字段的值连接起来插入到临时表中b_tmp,这样便可以使用【中级】的单字段的判断删除方法。
#将两字段连接的值,a_tmp表中唯一值的字段插入b_tmp表
insert into b_tmp
select concat(id,name),rowid from a_tmp;
#查出需要留下来的行
select id_name,max(rowid)
from b_tmp
group by id_name
having count(id_name)>1;
#使用【中级】的方法,或存储过程完成去重的工作
【终极】每行都有两份一样的数据
例如:
使用方法:对于整行的数据都一样,是没办法使用SQL语句删除的,因为没有可以使用的条件限制来留下一行删除所有与其相同的行。没有不同的字段可以自己创造不同的字段,即:添加一个字段,设为自增长,并设为主键,它会自动添加上值。
id name
1 a
1 a
1 b
1 b
2 c
2 c
3 c
3 c
结果:
id name rowid
1 a 1
1 b 3
2 c 5
3 c 7
操作:
添加一个自增长的字段,并暂时设为主键。
使用上面【中级】和【高级】的方法操作。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:https://my.oschina.net/starglm/blog/748701


猜你喜欢
- 关于数据可视化的模块,之前已经分享过很多了,小伙伴们可以到历史文章中搜索,不过都是静态的可视化数据展示效果。这几天刚刚发现的这款动态数据可视
- 本文实例讲述了Python3最长回文子串算法。分享给大家供大家参考,具体如下:1. 暴力法思路:对每一个子串判断是否回文class Solu
- 本脚本为本人在性能测试过程中编写,用于对进程状态的监控,也可以用于日常的监控,适用性一般,扩展性还行# -*- coding: UTF-8
- 来源:Chinaasp 之所以翻译这篇文章,是因为目前关于CGI安全性的文章都是拿Perl作为例子,而专门介绍ASP,PHP或者JSP安全性
- 所需库的安装很多人问Pytorch要怎么可视化,于是决定搞一篇。tensorboardX==2.0tensorflow==1.13.2由于t
- 1、从Kmeans说起Kmeans是一个非常基础的聚类算法,使用了迭代的思想,关于其原理这里不说了。下面说一下如何在matlab中使用kme
- Python一切皆对象(object),每个对象都可能有多个属性(attribute)。Python的属性有一套统一的管理方案。属性的__d
- 效果展示打地鼠小游戏简介打地鼠的游戏规则相信大家都知道,这里就不多介绍了,反正就是不停地拿锤子打洞里钻出来的地鼠呗~首先,让我们确定一下游戏
- 1、mysql 导出文件:SELECT `pe2e_user_to_company`.company_name, `pe2e_user_to
- python中字典的key不能是可变类型。字典可存储任意类型对象,其中值可以取任何数据类型,但键必须是不可变的,如字符串、数字或元组。语法格
- SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE function [dbo]
- 1. h5py简单介绍h5py文件是存放两类对象的容器,数据集(dataset)和组(group),dataset类似数组类的数据集合,和n
- 本文实例为大家分享了python opencv进行图像拼接的具体代码,供大家参考,具体内容如下思路和方法思路1、提取要拼接的两张图片的特征点
- python是一种美丽的语言 ,应用范围也很广,有很多的人开始学习python开发,对于初学者,这里有5本经典的书籍,如果你打算用看书来学习
- 前言Tensorflow的核心与NumPy非常相似,但具有GPU支持;Tensorflow支持分布式计算(跨多个设备和服务器)。像NumPy
- 使用连接(JOIN)来代替子查询(Sub-Queries)MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一
- CAST函数用于将值从一种数据类型转换为表达式中指定的另一种数据类型语法CAST(value AS datatype)AS关键字用于分隔两个
- 对于DBA来说,丢失超管用户root的密码是致命的,可以通过添加--ship-grant-tables参数来跳过权限表。1、忘记root密码
- 直接pip install impala 是不行滴,按照以下步骤安装就会成功!一路安装就可以1、pip install six2、pip i
- 目录1.变量的引用的底层原理2.变量的分类Python的变量,简单来说有数值型,布尔型,字符串类型,列表,元组,字典等6大类。那么不同变量类