SQL Server分页方法汇总
作者:springsnow 时间:2024-01-26 20:18:49
根据SalesOrderID排序,取第16-18行这3条记录。
方法一:(最常用的分页代码, top / not in)
SELECT TOP 3 [SalesOrderID], [RevisionNumber], [OrderDate]
FROM [AdventureWorks2012].[Sales].[SalesOrderHeader]
WHERE [SalesOrderID] NOT IN ( SELECT TOP 15 [SalesOrderID]
FROM [AdventureWorks2012].[Sales].[SalesOrderHeader]
ORDER BY [SalesOrderID] )
ORDER BY SalesOrderID;
备注: 注意前后的order by 一致
方法二:排名开窗函数 (row_number() over (order by ))
SELECT [SalesOrderID], [RevisionNumber], [OrderDate]
FROM ( SELECT [SalesOrderID], [RevisionNumber], [OrderDate] ,
ROW_NUMBER() OVER ( ORDER BY SalesOrderID ) AS rowid
FROM [AdventureWorks2012].[Sales].[SalesOrderHeader] ) cte
WHERE rowid
BETWEEN 16 AND 18;
方法三:(offset /fetch next, SQL Server 2012支持,性能最好!)
SELECT [SalesOrderID], [RevisionNumber], [OrderDate]
FROM [AdventureWorks2012].[Sales].[SalesOrderHeader]
ORDER BY SalesOrderID OFFSET 15 ROW FETCH NEXT 3 ROWS ONLY;
总结:利用变量进行分页
DECLARE @page INT, @size INT, @Total INT;
SELECT @page = 3, @size = 10; --当前页面为3,页面大小为10
-------方法一
SELECT TOP ( @size ) [SalesOrderID], [RevisionNumber], [OrderDate]
FROM [AdventureWorks2012].[Sales].[SalesOrderHeader]
WHERE [SalesOrderID] NOT IN ( SELECT TOP (( @page - 1 ) * @size ) [SalesOrderID]
FROM [AdventureWorks2012].[Sales].[SalesOrderHeader]
ORDER BY [SalesOrderID] )
ORDER BY SalesOrderID;
-------方法二
SELECT [SalesOrderID], [RevisionNumber], [OrderDate]
FROM ( SELECT [SalesOrderID], [RevisionNumber], [OrderDate] ,
ROW_NUMBER() OVER ( ORDER BY SalesOrderID ) AS rowid
FROM [AdventureWorks2012].[Sales].[SalesOrderHeader] ) cte
WHERE rowid
BETWEEN ( @page - 1 ) * @size + 1 AND @page * @size;
-------方法三
SELECT [SalesOrderID], [RevisionNumber], [OrderDate]
FROM [AdventureWorks2012].[Sales].[SalesOrderHeader]
ORDER BY SalesOrderID OFFSET ( @page - 1 ) * @size ROWS FETCH NEXT @size ROWS ONLY; ---offset的当前页面是从零开
来源:https://www.cnblogs.com/springsnow/p/9590661.html
标签:SQL,Server,分页
0
投稿
猜你喜欢
Python通用循环的构造方法实例分析
2022-03-30 00:03:56
简单了解Python3 bytes和str类型的区别和联系
2023-11-19 21:52:29
Python虚拟机字节码教程之控制流实现详解
2023-01-09 09:56:53
python根据京东商品url获取产品价格
2022-01-26 12:14:31
使用Python脚本生成随机IP的简单方法
2023-12-30 06:46:28
python模块之subprocess模块级方法的使用
2022-05-10 03:28:32
Python基础知识学习之类的继承
2022-09-02 15:41:05
通过Python把学姐照片做成拼图游戏
2022-03-24 17:21:01
django的登录注册系统的示例代码
2021-05-14 23:27:59
使用SQL Server 2008远程链接时SQL数据库不成功的解决方法
2024-01-29 09:15:46
php基础教程
2024-06-05 09:23:33
python3连接mysql获取ansible动态inventory脚本
2024-01-19 23:13:54
JS+CSS实现闪烁字体效果代码
2024-04-18 09:31:04
解决golang内存溢出的方法
2024-05-21 10:20:12
windows下安装make及使用makefile文件
2023-05-08 07:50:53
使用sqlplus连接Oracle数据库问题
2024-01-13 09:25:16
python matplotlib中文显示参数设置解析
2022-11-18 14:11:41
python3 写一个WAV音频文件播放器的代码
2023-04-09 05:06:36
Python3 log10()函数简单用法
2021-06-27 16:47:16
asp连接mysql的问题(端口)
2009-08-21 13:23:00