MySQL中row_number的实现过程
作者:ALIVEE 发布时间:2024-01-23 15:08:54
标签:MySQL,row,number
一 、背景
一般在数据仓库环境中,我们可以很方便的使用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


猜你喜欢
- 引言 咱们公司从事的是信息安全涉密应用的一些项目研发一共有分为三步,相比较于一般
- 本文实例为大家分享了python使用tornado实现简单爬虫的具体代码,供大家参考,具体内容如下代码在官方文档的示例代码中有,但是作为一个
- 这篇分享几个在地址栏实现的Javascript有趣效果和应用。能在浏览器地址栏实现的效果太多了,字体放大、显示所有图片、显示Cookie等等
- 前言当需要将多张图像拼接成一张更大的图像时,通常会用到图片拼接技术。这种技术在许多领域中都有广泛的应用,例如计算机视觉、图像处理、卫星图像、
- 最近在使用爬虫爬取数据时,经常会返回403代码,大致意思是该IP访问过于频繁,被限制访问。限制IP访问网站最常用的反爬手段了,其实破解也很容
- 数据概况Fashion-mnist经典的MNIST数据集包含了大量的手写数字。十几年来,来自机器学习、机器视觉、人工智能、深度学习领域的研究
- 模拟栈Stack() 创建一个空的新栈。 它不需要参数,并返回一个空栈。push(item)将一个新项添加到栈的顶部。它需要 item 做参
- 讲解1、库:os,shutil.copy2、代码效果:对指定文件夹内文件等量分配到新的文件夹3、代码原理:用os.listdir()遍历文件
- 字体大小CSS2规范根据长度——水平和垂直尺寸——来定义字体。这个长度为一个数值,前面可能带一个可选的加(+)或减(-)标记符。另外,该数值
- 安装conda activate ps pip install visdom激活ps的环境,在指定的ps环境中安装visdom开启pytho
- 前面的深入理解Routing章节,我们讲到了在MVC中,除了使用默认的ASP.NET 5的路由注册方式,还可以使用基于Attribute的特
- 匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了匹配双字节字符(包括汉字在内
- 我就废话不多说了,还是直接看代码吧def c(a,b): c=a**2+b**2 return ("the right trian
- python中break、continue 、exit() 、pass区分1、break:跳出循环,不再执行Python break语句,就
- 总结常用基本点如下: 1、触发器有两种类型:数据定义语言触发器(DDL触发器)和数据操纵语言触发器(DML触发器)。 DDL触发器:在用户对
- 今天训练faster R-CNN时,发现之前跑的很好的程序(是指在运行程序过程中,显卡利用率能够一直维持在70%以上),今天看的时候,显卡利
- split() 通过指定分隔符对字符串进行切片,如果第二个参数 num 有指定值,则分割为 num+1 个子字符串。split()方法定义于
- 在后台添加中一般我们都设置了一个“关键字”,而且一般输入可能如下: 娃娃,毛绒娃娃,日本充气娃娃 我们将根据这个来做,具体实现如下: 先看一
- 零、前言python代码中配置文件是必不可少的内容。常见的配置文件格式有很多中:ini、yaml、xml、properties、txt、py
- 前言MySQL性能优化是一个老生常谈的问题,无论是在实际工作中还是面试中,都不可避免遇到相应的场景,下面博主就总结一些能够帮助大家解决这个问