MySQL中row_number的实现过程
作者:ALIVEE 时间:2024-01-23 15:08:54
一 、背景
一般在数据仓库环境中,我们可以很方便的使用row_number函数根据某个维度来对数据进行分组,实现每个组内数据编号排序的效果。如下图所示,该图是在mysql环境中生成的效果图,这里以lcid进行的分组,num等价于row_number函数实现的效果:
二、实现过程
1.设置mysql变量
设置两个变量
set @row_number:=0; --根据lcid_no的判断结果生成row_number序号
set @lcid_no:= 0; --用于获取每行lcid列数据,然后与前面一行的lcid数据进行对比,若相同则自增1,否则为1
2.使用case when
SELECT @row_number:=CASE
WHEN @lcid_no = s.lcid THEN @row_number + 1
ELSE 1
END AS num,
@lcid_no:=s.lcid AS lcid,
s.lcid
FROM r_qcloud_approval_fh_d s,(select @orw_number:=0,@lcid_no:=0) t
ORDER BY s.lcid;
3.过程分析
若存在多条相同数据情形
1)初始条件下,游标指向第一条数据,此时lcid_no = 0,lcid_no 不等于lcid,故row_number = 1
2)游标指向第二条数据,lcid_no = 上一条数据的lcid,因上一条数据的lcid = 当前行lcid,因此row_number =2
无重复数据情形
1)初始条件下,游标指向第一条数据,此时lcid_no = 0,lcid_no 不等于lcid,故row_number = 1
三、使用场景
在mysql这种关系型数据库中,没有row_number函数的情况下使用
来源:https://blog.csdn.net/ALIVEE/article/details/109030304
标签:MySQL,row,number
0
投稿
猜你喜欢
Python实现截图生成符合markdown的链接
2021-07-09 10:18:22
Windows下用py2exe将Python程序打包成exe程序的教程
2021-07-11 23:03:17
mybatis plus实体类中字段映射mysql中的json格式方式
2024-01-22 16:11:37
如何实现网上站点维护?
2010-05-24 18:35:00
mysql误删root用户恢复方法
2024-01-22 01:44:18
python用match()函数爬数据方法详解
2023-07-27 12:52:48
php下使用iconv需要注意的问题
2023-11-23 03:05:09
python基础之并发编程(一)
2021-01-10 08:56:15
SQLServer2005 XML数据操作代码
2024-01-27 11:50:17
python中如何实现将数据分成训练集与测试集的方法
2022-10-03 23:11:45
sql 语句 取数据库服务器上所有数据库的名字
2024-01-24 15:58:06
使用pycharm运行flask应用程序的详细教程
2022-12-15 05:15:55
用python处理图片之打开\\显示\\保存图像的方法
2021-03-16 11:37:08
django请求返回不同的类型图片json,xml,html的实例
2021-05-17 10:03:23
Windows系统彻底卸载SQL Server通用方法(推荐!)
2024-01-17 19:03:25
vue实现一个单独的组件注释
2024-04-27 15:47:04
js查找父节点的简单方法
2023-09-11 01:12:42
使用Python制作自动推送微信消息提醒的备忘录功能
2023-02-26 18:19:40
js 浏览本地文件夹系统示例代码
2024-04-17 09:48:23
Softmax函数原理及Python实现过程解析
2022-12-15 02:18:24