手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >SQL2005利用ROW_NUMBER() OVER实现分页功能
SQL2005利用ROW_NUMBER() OVER实现分页功能
摘要:1.首先介绍ROW_NUMBER()OVER的基本用法2.看一下实例数据初始化数据createtableemployee(empidint,...

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

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

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)

数据结果显示

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

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

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

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

3.简单分页实现

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

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

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

将上面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

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

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

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

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

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

【SQL2005利用ROW_NUMBER() OVER实现分页功能】相关文章:

SQL2005CLR函数扩展-解析天气服务的实现

利用JAVA实现DES加密算法

sqlserver使用窗口函数实现分页

一条SQL语句搞定Sql2000 分页

SQL2005 高效分页sql语句

SQLServer 2008 Merge语句的OUTPUT功能

SQL Server 2005安装实例环境图解第1/2页

SQL Server 2008 维护计划实现数据库备份心得

解析SQL2005中如何使用CLR函数获取行号

SQL2005CLR函数扩展-数据导出的实现详解

精品推荐
分类导航