欢迎来到代码驿站!

当前位置:首页 >

SQL2005利用ROW_NUMBER() OVER实现分页功能

时间:2021-05-02 08:18:45|栏目:|点击:

1.首先介绍ROW_NUMBER() OVER的基本用法


2.看一下实例数据

初始化数据

create table employee (empid int ,deptid int ,salary decimal(10,2))

insert into employee values(1,10,5500.00)

insert into employee values(2,10,4500.00)

insert into employee values(3,20,1900.00)

insert into employee values(4,20,4800.00)

insert into employee values(5,40,6500.00)

insert into employee values(6,40,14500.00)

insert into employee values(7,40,44500.00)

insert into employee values(8,50,6500.00)

insert into employee values(9,50,7500.00)

数据结果显示

 


根据部门分组(deptid),显示每个部门的工资(salary)等级

 


这是想要得到的结果第二列根据部门进行分组,第三列工资由高到低,rank进行部门内部的排列

 

3.简单分页实现

SELECT  Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee

根据上面1,2两点我们可以看出这个SQL只是按照工资降序排序后,并没有通过PARTITION BY COLUMN进行分区(分组),然后通过row_number()从1开始,为每一条分组记录返回一个数字。结果如下

 


将上面SQL返回的结果集当作一个数据表

(SELECT  Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee)as NewTable

假如我们每页5条记录,

那么第一页显示select * from (SELECT  Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee ) as NewTable where rank between 1 and 5


第二页为select * from (SELECT  Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee ) as NewTable where rank between 6 and 10

 


当然我们第二页这里只有4条记录。

分页就这样实现了,对于多表查询进行分页也是同样的道理。

 

上一篇:国产程序员编辑器 EditMinus 0.4 中文beta版 下载

栏    目:

下一篇:docker 容器上编译 go 程序提示找不到文件问题

本文标题:SQL2005利用ROW_NUMBER() OVER实现分页功能

本文地址:http://www.codeinn.net/misctech/113039.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有