mysql去重查询的三种方法小结
作者:小马穿云 发布时间:2024-01-21 14:52:22
标签:mysql,去重,查询
前言
数据库生成环境中经常会遇到表中有重复的数据,或者进行关联过程中产生重复数据,下面介绍三种剔除重复数据的方法,请针对自己的应用场景选择使用。
一、插入测试数据
下图测试数据中user_name为lilei、zhaofeng的用户是重复数据。
二、剔除重复数据方法
1.方法一:使用distinct
代码如下(示例):
select distinct user_name,email,address from t_user;
如下图,已将数据剔重,重复数据仅保留1条。
2.方法二:使用group by
SELECT user_name,email,address
FROM t_user
GROUP BY user_name, email, address;
如下图,已将数据剔重,重复数据仅保留1条。
3.方法三:使用开窗函数
(1)如果你的数据库是MySQL8以上版本你可以直接使用开窗函数row_number()
SELECT *
FROM(
SELECT t.*,
ROW_NUMBER() OVER(PARTITION BY user_name
ORDER BY last_login DESC) rn
FROM table AS t
) AS t_user
WHERE rn = 1;
(2)如果你的数据库版本低于MySQL8,使用类row_number()方法
select user_name, email, address
from (
select
b.*,
@rownum := @rownum+1 ,-- 定义用户变量@rownum来记录数据的行号
if(@pdept=b.user_name,@rank:=@rank+1,@rank:=1) as rank,-- 如果当前分组user_name和上一次分组user_name相同,则@rank(对每一组的数据进行编号)值加1,否则表示为新的分组,从1开始
@pdept:=b.user_name -- 定义变量@pdept用来保存上一次的分组id
from (select * from t_user) b ,
(select @rownum :=0 , @pdept := null ,@rank:=0) c -- 初始化自定义变量值
order by b.user_name,b.last_login desc -- 该排序必须,否则结果会不对
) result
where rank = 1;
如下图,已将数据剔重,重复数据仅保留1条。
来源:https://blog.csdn.net/ma286388309/article/details/129261927
0
投稿
猜你喜欢
- 主要思路(1)数据选取获取数据的链接为:https://www.basketball-reference.com/获取的数据内容为:每支队伍
- transforms按住Ctrl查看transforms的源码可以知道,transforms就是一个python文件,里面定义了很多类,每一
- 本文实例讲述了Python实现的本地文件搜索功能。分享给大家供大家参考,具体如下:偶尔需要搜索指定文件,不想每次都在windows下面去搜索
- 安装:cnpm i -S jwt-decode引入:import jwt_decode from "jwt-decode"
- 无意中看到一段用Tkinter库写的放烟花的程序,就跟着跑了一遍。设计理念:通过让画面上一个粒子分裂为X数量的粒子来模拟 * 效果。粒子会发生
- 1. 面向对象编程 OOP ( Object Oriented Programming) 即面向对象编程。面向对象编程是一种&nb
- function GetRequest() { var
- 操作所涉及的文件都在当前用户下面的隐藏文件:1. 打开Anaconda Prompt(如果之前生成过Config配置文件则不需要第一步)终端
- 前言:创建进程池可以形象地理解为创建一个并行的流水线,只需创建一次流水线的消耗,处理接收到的任务的,不使用进程池。 ,浪费时间。中方本来没有
- 前言:Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开
- 当下,C#与Python都是比较热门的计算机编程语言,他们各有优缺点,如果能让他们互相配合工作,那是多么美好的事情,今天我来讲解一下如何利用
- 首先,啰嗦几句废话如下: (1)触发器(trigger)是个特殊的存储过程,它的执行并不需要我们去显式调用,而是由一些事件触发,这有点类似C
- 以下是个人在学习beautifulSoup过程中的一些总结,目前我在使用爬虫数据时使用的方法的是:先用find_all()找出需要内容所在的
- Mysql数据库备份的常用3种方法: 1、直接拷贝(cp、tar,gzip,cpio) 2、mysqldump 3、mysqlhotcopy
- 本文实例讲述了Python中defaultdict与lambda表达式用法。分享给大家供大家参考,具体如下:从教程中看到defaultdic
- 具体编译过成与正常的Python源代码在x86平台上的过程无异,此篇随笔仅当用作复制黏贴的备忘录。不得不说在一个老旧系统上安装一个老旧的Py
- 本文实例讲述了php实现将数组或对象写入到文件的方法。分享给大家供大家参考,具体如下:php将数组或对象原样写入或保存到文件有三种方法可以实
- ASP(Active Server Page)是Microsoft公司推出的基于PWS(Personal We
- 目录分析问题音频url搜索urlJS代码实现分析问题音频url点入某个音乐的播放界面,通过F12-Network,分析数据,可以看到有一个i
- 【原文地址】 Tip/Trick: How to upload a .SQL file to a Hoster and