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 相关文章推荐
2021-4-5课程——SQL Server查询【3】
Apr 05 SQL Server
SQL Server基本使用和简单的CRUD操作
Apr 05 SQL Server
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
Jun 30 SQL Server
SQL SERVER存储过程用法详解
Feb 24 SQL Server
sql server 累计求和实现代码
Feb 28 SQL Server
使用SQL实现车流量的计算的示例代码
Feb 28 SQL Server
SQL Server使用导出向导功能
Apr 08 SQL Server
SQL Server的存储过程与触发器以及系统函数和自定义函数
Apr 10 SQL Server
SQL Server中锁的用法
May 20 SQL Server
SQL Server数据库备份和恢复数据库的全过程
Jun 14 SQL Server
SQL bool盲注和时间盲注详解
Jul 23 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
yii数据库的查询方法
2015/12/28 PHP
zend framework重定向方法小结
2016/05/28 PHP
php将文件夹打包成zip文件的简单实现方法
2016/10/04 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
JavaScript 面向对象的 私有成员和公开成员
2010/05/13 Javascript
JavaScript的parseInt 取整使用
2011/05/09 Javascript
javascript中window.event事件用法详解
2012/12/11 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
详解微信小程序动画Animation执行过程
2020/09/23 Javascript
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python脚本实现格式化css文件
2015/04/08 Python
python异步存储数据详解
2019/03/19 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
python字符串反转的四种方法详解
2019/12/02 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
python excel和yaml文件的读取封装
2021/01/12 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
电气工程自动化求职信
2014/03/14 职场文书
工程材料采购方案
2014/05/18 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
加强作风建设心得体会
2014/10/22 职场文书
白酒代理协议书范本
2014/10/26 职场文书
离婚协议书范文2014(夫妻感情破裂)
2014/12/14 职场文书
婚育证明格式
2015/06/17 职场文书
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL