SQL Server分页的方法有哪些

本文主要介绍"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] ) 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分页的方法有哪些" 就介绍到这。希望大家多多支持编程宝库

本文主要介绍"Redis中使用Pipelining加速查询的问题怎么解决" 有关的知识,希望能够解决您遇到有关问题,下面我们一起来看看这篇 "Redis中使用Pipelining加 ...