SQL server分页

一. 三重循环

-- 设置执行时间开始,用来查看性能的
set statistics time on ;
-- 分页查询(通用型)
select *
from (select top pageSize *
from (select top (pageIndex*pageSize) *
from [user]
order by Id asc ) -- 其中里面这层,必须指定按照升序排序,省略的话,查询出的结果是错误的。
as temp_sum_user
order by userId desc ) temp_order
order by userId asc
 
set statistics time on ;
-- 分页查询第2页,每页有10条记录
select *
from (select top 10 *
from (select top 20 *
from [user]
order by userId asc ) -- 其中里面这层,必须指定按照升序排序,省略的话,查询出的结果是错误的。
as temp_sum_user
order by userId desc ) temp_order
order by userId asc;

二:max(主键

set statistics time on;
-- 分页查询(通用型)
select top pageSize *
from [User]
where UserID>=
(select max(UserID)
from (select top ((pageIndex-1)*pageSize+1) UserID
from student
order by UserID asc) temp_max_ids)
order by UserID;
 
 set statistics time on;
-- 分页查询第2页,每页有10条记录
select top 10 *
from [User]
where UserID>=
(select max(UserID)
from (select top 11 UserID
from [User]
order by UserID asc) temp_max_ids)
order by UserID;

 三:row_number (server 2005版本以上才有)

set statistics time on;
-- 分页查询(通用型)
select top pageSize *
from (select row_number()
over(order by UserID asc) as rownumber,*
from [User]) temp_row
where rownumber>((pageIndex-1)*pageSize);
 
set statistics time on;
-- 分页查询第2页,每页有10条记录
select top 10 *
from (select row_number()
over(order by UserID asc) as rownumber,*
from [User]) temp_row
where rownumber>10;

 四:offset /fetch next(2012版本及以上才有

set statistics time on;
-- 分页查询(通用型)
select * from [User]
order by UserID
offset ((@pageIndex-1)*@pageSize) rows
fetch next @pageSize rows only;
 
set statistics time on;
-- 分页查询第2页,每页有10条记录
select * from [User]
order by UserID
offset 10 rows
fetch next 10 rows only ;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值