sql server分页的一种写法
根据一位网友写的SQL加以记录:
select top pageSize * from 表名
where id not in
(
select top (pageNo-1)*pageSize id from 表名
)
pageSize:每页记录数
pageNo: 第几页
举例:假如 每页要显示 5条 要显示第三页
也就是 pageSize= 5
pageNo=3
(pageNo-1)*pageSize = (3-1)*5 = 2*5
这的意思就是得到前两页
not in (............)
就是不显示前两页
从前两页的数据 往后 显示 pageSize 条数据
综上所述SQL为:pageNo =3 pageSize=5
(pageNo-1)*pageSize= 2*5=10
select top 5 * from 表名 where id not in(select top 10 id from 表名)
还有一种类似于这样的写法:
即
select top pageSize * from 表名
where id not in
(
select top pageNo*pageSize id from 表名 order by id asc // 即先升序排好,取出包含那页的所有数据,
)
order by id desc //然后再倒序排好,再取前面几条记录即可
总的来说:即先升序排好,取出包含那页的所有数据,然后再倒序排好,再取前面几条记录即可(做到取到了想要的那一页)