sqlserver分页的两种写法分别介绍

时间:2021-11-28 08:00:24

第一种是最传统的写法,用存储过程中的变量作为分页的乘数 

复制代码代码如下:


[c-sharp] view plaincopyprint?create proc p_paged1 
@pageSize int,@currentPage int 
as 
select top (@pageSize) * from student 
where id not in 
(select top (@pageSize*(@currentPage-1)) id from student) 
go 
exec p_paged1 2,3 
create proc p_paged1 
@pageSize int,@currentPage int 
as 
select top (@pageSize) * from student 
where id not in 
(select top (@pageSize*(@currentPage-1)) id from student) 
go 
exec p_paged1 2,3 


--SQL Server2005以后的分页语句 

复制代码代码如下:


[c-sharp] view plaincopyprint?create proc p_paged2 
@pageStart int, @pageEnd int 
as 
select * from 
(select *,row_number() over(order by id desc) as rnum 
from student) t 
where t.rnum between @pageStart and @pageEnd 
go 

exec p_paged2 5,10