MySQL中row_number的实现过程

作者:ALIVEE 时间:2024-01-23 15:08:54 

一 、背景

一般在数据仓库环境中,我们可以很方便的使用row_number函数根据某个维度来对数据进行分组,实现每个组内数据编号排序的效果。如下图所示,该图是在mysql环境中生成的效果图,这里以lcid进行的分组,num等价于row_number函数实现的效果:

MySQL中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
  • asp之家 网络编程 m.aspxhome.com