SQL Server分頁方法匯總
更新時(shí)間:2022年05月19日 10:46:56 作者:springsnow
這篇文章介紹了SQL Server分頁的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
根據(jù)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 一致
方法二:排名開窗函數(shù) (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;
總結(jié):利用變量進(jìn)行分頁
DECLARE @page INT, @size INT, @Total INT;
SELECT @page = 3, @size = 10; --當(dāng)前頁面為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的當(dāng)前頁面是從零開到此這篇關(guān)于SQL Server分頁的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
sql server中隨機(jī)函數(shù)NewID()和Rand()
在SQL語言中,隨機(jī)函數(shù)NEWID和rand()用法并不相同,下面就將為您示例分析這兩個(gè)隨機(jī)函數(shù)的區(qū)別,供您參考,希望對(duì)您深入理解SQL函數(shù)能起到作用2015-10-10
SQL?SERVER常用的日期與時(shí)間查詢總結(jié)
這篇文章介紹了SQL?SERVER常用日期與時(shí)間查詢的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
Windows系統(tǒng)徹底卸載SQL?Server通用方法(推薦!)
卸載SQL是一件很麻煩的事,只要是重裝過SQL的人都知道,下面這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)徹底卸載SQL?Server通用方法的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
基于Sql Server通用分頁存儲(chǔ)過程的解決方法
本篇文章,小編將為大家介紹基于Sql Server通用分頁存儲(chǔ)過程的解決方法,有需要的朋友可以參考一下2013-04-04
SQL?Server縱表轉(zhuǎn)橫表的實(shí)現(xiàn)示例
在使用SQL?Server數(shù)據(jù)庫的過程中我們經(jīng)常會(huì)遇到需要將查詢結(jié)果從縱表轉(zhuǎn)成橫表的問題,本文就來介紹一下SQL?Server縱表轉(zhuǎn)橫表示例,感興趣的可以了解一下2023-12-12

