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 相关文章推荐
SQL Server——索引+基于单表的数据插入与简单查询【1】
Apr 05 SQL Server
SQL Server 数据库实验课第五周——常用查询条件
Apr 05 SQL Server
利用 SQL Server 过滤索引提高查询语句的性能分析
Jul 15 SQL Server
sql通过日期判断年龄函数的示例代码
Jul 16 SQL Server
sql server删除前1000行数据的方法实例
Aug 30 SQL Server
SQL SERVER实现连接与合并查询
Feb 24 SQL Server
sql server 累计求和实现代码
Feb 28 SQL Server
SQL Server远程连接的设置步骤(图文)
Mar 23 SQL Server
使用MybatisPlus打印sql语句
Apr 22 SQL Server
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
Apr 22 SQL Server
SQL Server 忘记密码以及重新添加新账号
Apr 26 SQL Server
SQL Server携程核心系统无感迁移到MySQL实战
Jun 01 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
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
php实现将Session写入数据库
2015/07/26 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
RequireJs的使用详解
2017/02/19 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
详解AngularJS脏检查机制及$timeout的妙用
2017/06/19 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
Ruby使用eventmachine为HTTP服务器添加文件下载功能
2016/04/20 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
设计毕业生简历中的自我评价
2013/10/01 职场文书
心理学专业毕业生推荐信范文
2013/11/21 职场文书
网上商城创业计划书范文
2014/01/31 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
MySQL数据库查询之多表查询总结
2022/08/05 MySQL