博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlserver三种分页查询方法
阅读量:2504 次
发布时间:2019-05-11

本文共 1015 字,大约阅读时间需要 3 分钟。

假设有表student,每页显示10条记录,查询第5页的内容。

第一种方法:

select top 10 *from studentwhere id not in( --40是这么计算出来的:10*(5-1) select top 40 id from student order by id)order by id

原理:需要拿出数据库的第5页,就是40-50条记录。首先拿出数据库中的前40条记录的id值,然后再拿出剩余部分的前10条元素

第二种方法:

select top 10 *from studentwhere id >( select isnull(max(id),0) from   (   select top 40 id from student order by id  ) A)order by id

原理:先查询前40条记录,然后获得其最id值,如果id值为null的,那么就返回0

然后查询id值大于前40条记录的最大id值的记录。
这个查询有一个条件,就是id必须是int类型的。

第三种方法:

只支持sqlserver2005版本以上。

select top 10 *from ( select row_number() over(order by id) as rownumber,* from  student) Awhere rownumber > 40

原理:先把表中的所有数据都按照一个rowNumber进行排序,然后查询rownuber大于40的前十条记录。最后会多出rownumber 一列。

其中row_number()函数的使用语法如下:

ROW_NUMBER ( )     OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )
  • 参数:

    -PARTITION BY value_expression

    将 FROM 子句生成的结果集划入应用了 ROW_NUMBER 函数的分区。 value_expression 指定对结果集进行分区所依据的列。

       如果未指定 PARTITION BY,则此函数将查询结果集的 所有行视为单个组。

    -order_by_clause

    ORDER BY 子句可确定在特定分区中为行分配唯一 ROW_NUMBER 的顺序。
  • 返回值类型:

    bigint(长整型)

转载地址:http://vglgb.baihongyu.com/

你可能感兴趣的文章
第8章 Android异常与性能优化相关面试问题
查看>>
linux 定时备份文件夹
查看>>
有道单词导入 大量有道单词 生词本 批量导入 添加 有道单词XML 背单词
查看>>
jQuery Easing动画效果扩展插件
查看>>
bzoj 1002 [FJOI2007]轮状病毒 Matrix-Tree定理+递推
查看>>
Selenium WebDriver- 操作JavaScript的Alert弹窗
查看>>
娘的,自己的求逆序对模板又不好使了。。。。。。。。
查看>>
C#面向对象模式设计第十四讲:Template Method 模板模式(行为型模式)
查看>>
linux后台运行命令:&和nohup
查看>>
springboot + shiro学习(配置SecurityManager,Realm)
查看>>
http://desk.zol.com.cn/1600x900/
查看>>
Linux基础之命令练习Day3-文件管理:cat,tar,gzip,vim,ln
查看>>
iOS中使用nil NULL NSNULL的区别
查看>>
Hdu1754-线段树-单点更新
查看>>
在python中使用正则表达式(一)
查看>>
asp.net mvc 4.0的部署
查看>>
WordPress资源站点推荐
查看>>
Python性能鸡汤
查看>>
android Manifest.xml选项
查看>>
Cookie/Session机制具体解释
查看>>