SQL Server实现分页方法介绍


Posted in SQL Server onMarch 16, 2022

一、创建测试表

CREATE TABLE [dbo].[Student](
    [id] [int] NOT NULL,
    [name] [nvarchar](50) NULL,
    [age] [int] NULL)

二、创建测试数据

declare @i int
set @i=1
while(@i<10000)
begin
    insert into Student select @i,left(newid(),7),@i+12
    set @i += 1
end

三、测试

1、使用top关键字

top关键字表示跳过多少条取多少条

declare @pageCount int  --每页条数
declare @pageNo int  --页码
declare @startIndex int --跳过的条数
set @pageCount=10
set @pageNo=3
set @startIndex=(@pageCount*(@pageNo-1)) 
select top(@pageCount) * from Student
where ID not in
(
  select top (@startIndex) ID from Student order by id 
) order by ID

测试结果:

SQL Server实现分页方法介绍

2、使用row_number()函数

declare @pageCount int  --页数
declare @pageNo int  --页码
set @pageCount=10
set @pageNo=3
--写法1:使用between and 
select t.row,* from 
(
   select ROW_NUMBER() over(order by ID asc) as row,* from Student
) t where t.row between (@pageNo-1)*@pageCount+1 and @pageCount*@pageNo
--写法2:使用 “>”运算符
 select top (@pageCount) * from 
(
   select ROW_NUMBER() over(order by ID asc) as row,* from Student
) t where t.row >(@pageNo-1)*@pageCount
--写法3:使用and运算符 
select top (@pageCount) * from 
(
   select ROW_NUMBER() over(order by ID asc) as row,* from Student
) t where t.row >(@pageNo-1)*@pageCount and t.row<(@pageNo)*@pageCount+1

四、总结

ROW_NUMBER()只支持sql2005及以上版本,top有更好的可移植性,能同时适用于sql2000及以上版本、access。

这篇文章介绍了SQL Server实现分页方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

SQL Server 相关文章推荐
SQLServer2019 数据库的基本使用之图形化界面操作的实现
Apr 08 SQL Server
SqlServer 垂直分表(减少程序改动)
Apr 16 SQL Server
mybatis调用sqlserver存储过程返回结果集的方法
May 08 SQL Server
如何有效防止sql注入的方法
May 25 SQL Server
利用 SQL Server 过滤索引提高查询语句的性能分析
Jul 15 SQL Server
Spark SQL 2.4.8 操作 Dataframe的两种方式
Oct 16 SQL Server
SQL Server中常用截取字符串函数介绍
Mar 16 SQL Server
SQL Server数据库基本概念、组成、常用对象与约束
Mar 20 SQL Server
SQL Server数据库查询出现阻塞之性能调优
Apr 10 SQL Server
如何使用SQL Server语句创建表
Apr 12 SQL Server
SQL Server 忘记密码以及重新添加新账号
Apr 26 SQL Server
SQL Server数据库备份和恢复数据库的全过程
Jun 14 SQL Server
SQL Server中常用截取字符串函数介绍
Mar 16 #SQL Server
通过T-SQL语句创建游标与实现数据库加解密功能
Mar 16 #SQL Server
MySQL 中如何归档数据的实现方法
SQL Server查询某个字段在哪些表中存在
Mar 03 #SQL Server
sql时间段切分实现每隔x分钟出一份高速门架车流量
Feb 28 #SQL Server
使用SQL实现车流量的计算的示例代码
Feb 28 #SQL Server
Sql Server之数据类型详解
Feb 28 #SQL Server
You might like
php中取得URL的根域名的代码
2011/03/23 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
2016/03/21 PHP
PHP 极验验证码实例讲解
2016/09/29 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
尽可能写&quot;友好&quot;的&quot;Javascript&quot;代码
2007/01/09 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
解析Json字符串的三种方法日常常用
2018/05/02 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
python进行两个表格对比的方法
2018/06/27 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
Java语言程序设计测试题选择题部分
2014/04/03 面试题
《火烧云》教学反思
2014/04/12 职场文书
学生手册评语
2014/05/05 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
办公经费申请报告
2015/05/15 职场文书
Javascript设计模式之原型模式详细
2021/10/05 Javascript
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android