第一种采用offset fetch next方式,2012版本之上支持
select * from users order by id offset 0 rows fetch next 10 rows only ;; //offset A rows ,将前A条记录舍去,fetch next B rows only ,向后在读取B条数据
第二种,利用row_number() over(order by id)函数计算出行数,选定相应行数返回,SQL server 2005版本以上才支持
分页查询第2页,每页有10条记录
select top 10 *
from (select row_number()
over(order by sno asc) as rownumber,*
from user) temp_row
where rownumber>10;
第三种,max主键,先top前11条行记录,然后利用max(id)得到最大的id,之后再重新再这个表查询前10条,不过要加上条件,where id>max(id)
分页查询第2页,每页有10条记录
select top 10 *
from user
where sNo>=
(select max(sNo)
from (select top 11 sNo
from user
order by sNo asc) temp_max_ids)
order by sNo;
网友回复