SqlServer 分页查询

就先讲一个简单的分页查询,

原理:  如   一页 为10条数据,    要查第二页 第11- 20 条数据,  那么  要根据一个固定字段(如ID)先进行排序   查出 前 20条数据, 

然后再用子查询, 倒序  查  前10条数据,  即可查出第二页的数据     如下sql:   

SELECT TOP 10 A.* FROM (SELECT TOP 2X10 * FROM TABLE ORDER BY ID ASC)A  ORDER BY A.ID DESC 

当然了, 上面的分页查询是有一点问题的,  就是不管怎么查询,  最后一页的数据总是那么多, 

此处还有另一种分页方式, 会比较精确点了

 SELECT  A.* FROM  (SELECT TOP 60 * FROM TABLENAME ORDER BY ID ASC  )A 
WHERE A.ID NOT IN (SELECT TOP 50 ID FROM TABLENAME ORDER BY ID ASC)

 

但是我想说的是被好多人所不关注的一种分页方法:

 

select * from 表 order by id OFFSET PageIndex*pagenum ROWS FETCH next pagenumrows only

这种方法是不是很简单,但是这个只有在SQL Server 2012及以上版本中才能使用,无论是从逻辑读取数还是响应时间实际执行行数等关键参数看,SQL Server 2012提供的OFFSET/FETCH NEXT分页方式都比Row_Number()方式有了较大的提升。

注意:使用该方法必须使用order by ,不然会有语法错误。

 

如果需要进行筛选之类的,   可以在中间的查询语句中筛选,外层不变, 觉得好用点个赞哦   

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值