视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SQL2005利用ROW_NUMBER()OVER实现分页功能
2020-11-09 09:45:18 责编:小采
文档


SQL2005利用ROW_NUMBER() OVER实现分页功能,需要的朋友可以参考下

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条记录。

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

下载本文
显示全文
专题