SQL Server分页的方法有哪些
短信预约 -IT技能 免费直播动态提醒
这篇文章主要介绍了SQL Server分页的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL Server分页的方法有哪些文章都会有所收获,下面我们一起来看看吧。
方法一:(最常用的分页代码, 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] ) cteWHERE rowidBETWEEN 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] ) cteWHERE rowidBETWEEN ( @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分页的方法有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“SQL Server分页的方法有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341