mysql窗口函数row_number(mysql窗口函数rank)

mysql窗口函数row_number(mysql窗口函数rank)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> 

讯享网

​ 要讲row_number,首先得讲一下窗口函数。窗口函数,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理。

​ 窗口函数的基本语法如下:

讯享网

<窗口函数>的位置,可以放以下两种函数:

1) 专用窗口函数,包括后面要讲到的rank, dense_rank, row_number等专用窗口函数。

2) 聚合函数,如sum. avg, count, max, min等

partition by用来对表分组order by子句的功能是对分组后的结果进行排序

因为窗口函数是对where或者group by子句处理后的结果进行操作,所以窗口函数原则上只能写在select子句中

​ 在MySQL8.0版本中已支持row_number函数,接下来讲的内容基于MySQL5.7版本。

​ 在8.0版本前无row_number函数,那么我们可以自己建一个类似row_number的功能。

在这里插入图片描述
讯享网

​ 以上为表TEMP_TEST的数据。

要模拟row_number()函数,必须使用会话变量。

1、每行添加序号

 

在这里插入图片描述

2、每组添加序号

讯享网

在这里插入图片描述

 

​ 我在做Oracle向MySQL的数据库迁移中遇到了视图中使用row_number()函数的情况,一起看一下怎么在MySQL中用上面的方法实现视图中的row_number()函数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gFJGOLpf-1620808711750)(C:UsersyssAppDataRoamingTypora	ypora-user-imagesimage-20210510174119337.png)]

如果直接使用上面的方法会直接报错,这是因为MySQL在视图中不支持使用会话变量,所以我们只能创建一个函数来替代使用。

讯享网

在视图中使用自建的函数即可实现视图中使用row_number()函数。

在这里插入图片描述

小讯
上一篇 2025-05-05 12:34
下一篇 2025-04-22 12:09

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/168600.html