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数据定义——模式与基本表操作
Apr 05 SQL Server
SqlServer: 如何更改表的文件组?(进而改变存储位置)
Apr 05 SQL Server
SqlServer 垂直分表(减少程序改动)
Apr 16 SQL Server
SQL Server2019数据库备份与还原脚本,数据库可批量备份
Nov 20 SQL Server
SQLServer中exists和except用法介绍
Dec 04 SQL Server
sqlserver连接错误之SQL评估期已过的问题解决
Mar 23 SQL Server
SQL Server内存机制浅探
Apr 06 SQL Server
SQL Server的存储过程与触发器以及系统函数和自定义函数
Apr 10 SQL Server
如何使用SQL Server语句创建表
Apr 12 SQL Server
Sql Server 行数据的某列值想作为字段列显示的方法
Apr 20 SQL Server
SQL解决未能删除约束问题drop constraint
May 30 SQL Server
一次SQL查询优化原理分析(900W+数据从17s到300ms)
Jun 10 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
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
第五章 php数组操作
2011/12/30 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
Python读写unicode文件的方法
2015/07/10 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
荷兰手表网站:Watch2Day
2018/07/02 全球购物
10条PHP编程习惯
2014/05/26 面试题
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
师范应届生语文教师求职信
2013/10/29 职场文书
酒店副总经理岗位职责范本
2014/02/04 职场文书
创先争优承诺书范文
2014/03/31 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
停课通知书
2015/04/24 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
运动会新闻报道稿
2015/07/22 职场文书
详解TypeScript中的类型保护
2021/04/29 Javascript
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
mysql如何配置白名单访问
2021/06/30 MySQL
解析MySQL索引的作用
2022/03/03 MySQL