您现在的位置是:网站首页> 编程资料编程资料
SQL Server分页方法汇总_MsSql_
2023-05-26
351人已围观
简介 SQL Server分页方法汇总_MsSql_
根据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分页的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。
您可能感兴趣的文章:
相关内容
- 浅谈为什么#{}可以防止SQL注入_MsSql_
- 一文搞懂MySQL脏读,幻读和不可重复读_MsSql_
- SQL Server忘记sa账号密码重新添加新管理账号_MsSql_
- SQL Server 2019自定义安装教程_MsSql_
- SQL实现筛选出连续3天登录用户与窗口函数的示例代码_MsSql_
- 解决MybatisPlus SqlServer OFFSET 分页问题_MsSql_
- mybatis-plus的sql语句打印问题小结_MsSql_
- SQL窗口函数之取值窗口函数的使用_MsSql_
- SQL窗口函数之排名窗口函数的使用_MsSql_
- SQL窗口函数之聚合窗口函数的使用(count,max,min,sum)_MsSql_
