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 相关文章推荐
【HBU】数据库第四周 单表查询
Apr 05 SQL Server
SqlServer 垂直分表(减少程序改动)
Apr 16 SQL Server
如何有效防止sql注入的方法
May 25 SQL Server
数据库之SQL技巧整理案例
Jul 07 SQL Server
SQL SERVER存储过程用法详解
Feb 24 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中的流程控制语句
May 25 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
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
2014/07/11 PHP
ThinkPHP分页实例
2014/10/15 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
express express-session的使用小结
2018/12/12 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
谈谈如何手动释放Python的内存
2016/12/17 Python
Python中查看文件名和文件路径
2017/03/31 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
澳大利亚巧克力花束和礼品网站:Tastebuds
2019/03/15 全球购物
大学军训通讯稿
2014/01/13 职场文书
2014年工商所工作总结
2014/12/09 职场文书
小学推普周活动总结
2015/05/07 职场文书
单位更名证明
2015/06/18 职场文书
Python数据处理的三个实用技巧分享
2022/04/01 Python
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL
Java数组详细介绍及相关工具类
2022/04/14 Java/Android