SQL Server分页方法汇总
更新时间:2022年05月19日 10:46:56 作者:springsnow
这篇文章介绍了SQL Server分页的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
根据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的当前页面是从零开
到此这篇关于SQL Server分页的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
SQLServer2016 sa登录失败(错误代码18456)
18456错误是因密码或用户名错误而使身份验证失败并导致连接尝试被拒或者账户被锁定无法sa登录,本文就来介绍一下解决方法,感兴趣的可以了解一下2023-09-09sqlserver四舍五入使用round函数及cast和convert函数
大家在遇到sqlserver四舍五入除了用round函数还有没有其他方法呢?下面小编给大家介绍使用cast和convert函数,感兴趣的朋友一起学习吧2015-11-11SQL Server 2008 R2完美卸载教程(亲测有用)
SQL Server 2008 R2是一款非常强大的数据库管理系统,但在某些情况下可能需要卸载它,下面这篇文章主要给大家介绍了关于SQL Server 2008 R2完美卸载的相关资料,需要的朋友可以参考下2023-11-11Spark临时表tempView的注册/使用/注销/注意事项(推荐)
transformation是根据原有RDD创建一个新的RDD,而action则把RDD操作后的结果返回给driver,这篇文章主要介绍了Spark临时表tempView的注册/使用/注销/注意事项的相关资料,需要的朋友可以参考下2022-10-10WIN10运行SQL2000安装程序时没有反应的问题解决办法
Win10系统上安装2000数据库或者msde的数据库经常在打开第一步安装的时候就报错或者没有反应,文中通过图文介绍的非常详细,需要的朋友可以参考下2024-06-06将MS SQL SERVER数据库运行在普通用户(独立用户)状态下的设置方法终结篇
最近接手了一台服务器,里面安装了sqlserver,为了安全考虑,我们将sqlserver在普通权限下运行,这样就不会因为sqlserver的自身安全问题,导致服务器成为肉鸡的危险。2010-05-05
最新评论