MsSQL   发布时间:2022-05-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了《SQLServer》------常用的分页查询语句大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

  • 在sqlServer中,分页查询是经常用到的查询语句,一个好的分页查询语句,不能能将代码省略,还能提高运行效率,下面我们来探讨一下sqlServer中的分页查询语句。

  • 具体的业务逻辑是这样的,我数据库中有100条数据,我要查第40-50数据,表中有两个字段,一个字段是id,一个字段是name,其中id是不连续的,因为我删除id为44、45的记录,因为我要查数据的第40-50条记录,也就是id分别为41、42、43、46、47、…52的十条记录。那该怎么办呐?下面就是一些具体的例子。

方法一

  • 先搜出id在1-40之间的数据,紧接着搜出id不在1-40之间的数据,最后将搜出的结果取前十条。
SELECT TOP 10 --3、最后再取出前10条数据,这就是数据库中第41-50条数据(注意,id不是41-50,因为我删除了id为4445的记录) * FROM dbo.a WHERE id NOT IN ( --2、然后搜出id不在前40之内的其它数据 SELECT TOP 40 --1、按照id排序之后先搜出前40条数据 id FROM dbo.a ORDER BY id ) ORDER BY id;

《SQLServer》------常用的分页查询语句

方法二

  • 先查询前40条记录,然后获得其最id值,如果id值为null的,那么就返回0,然后查询id值大于前40条记录的最大id值的记录。这个查询有一个条件,就是id必须是int类型的。效果图同上。
@H_419_89@方法三、 使用Row_Number
  • 把表中的所有数据都按照一个rowNumber进行排序,然后查询rownuber大于40的前十条记录。
SELECT TOP 10 * FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY id ) AS rownumber,* FROM a ) A WHERE rownumber > 40;

方法四 OFFSET x ROW FETCH NEXT y ROWS ONLY;

  • 使用OFFSET是sqlServer2012新具有的分页功能,主要功能是从第x条数据开始共取y数据。但是其必须根再Order By
    后面使用,相比前三种方式更加方便。例如
select id from a Order by id Offset 0 Row Fetch Next 5 Rows Only.
  • 这种方法支持sqlServer2012,但是sqlServer2008不支持,这种方法就像lamda表达式的Skip().Take()原理差不多;另外,MysqL的Limit函数也是这么用的。

小结

  • 自我感觉第四种方式非常的爽,而且是爽到家了,因为没有嵌套查询啊,少了sql语句的嵌套,就少了“视觉上的逻辑”,但是大家一定要切记,这种方式只是适合sqlServer2012以及更高的版本,由于小编就吃过这亏。由上面的例子可以看出,sqlServer的确挺强大的,但是如果我们缺少发现“功能” 的眼睛的话,sql Server再强大对我们来说也没有。

大佬总结

以上是大佬教程为你收集整理的《SQLServer》------常用的分页查询语句全部内容,希望文章能够帮你解决《SQLServer》------常用的分页查询语句所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: