[SQL Server]分頁功能的實現
在進行一些查詢的時候,如果返回的結果集很大,那麼使用者可能會希望對這些結果進行分頁顯示。也就是說,可以指定每一頁顯示多少條記錄,以及要顯示哪一頁的記錄。
以示例資料庫AdventureWorks的Person.Contact表為例,現在希望顯示該表中的人名以及其稱呼。如果執行以下語句:
SELECT Title, FirstName, Lastname
FROM Person.Contact
FROM Person.Contact
那麼會一次過返回19972行記錄,面對這麼大的結果集真是頭疼……還好我們可以把結果進行分頁。
要實現分頁需要用到巢狀子查詢,該子查詢就是上面的SELECT語句,不過我們還要為其加上一列,該列用數字為每一行順序標識編號。這裡要使用ROW_NUMBER()函式:
SELECT ROW_NUMBER() OVER (ORDER BY ContactID) AS RowNum, Title, FirstName, Lastname
FROM Person.Contact
FROM Person.Contact
有了順序、唯一的編號,就可以在外部查詢中進行分頁,不過在這之前需要兩個變數,表示每頁顯示多少行和頁碼。然後在在外部查詢加一個WHERE子句和TOP子句。
完整的程式碼像這個樣子:
DECLARE @RowsPerPage int, @PageIndex int
SET @RowsPerPage = 10
SET @PageIndex = 1
SELECT sub.Title, sub.FirstName, sub.LastName
FROM
(SELECT ROW_NUMBER() OVER (ORDER BY ContactID) AS RowNum, Title, FirstName, Lastname
FROM Person.Contact) AS sub
WHERE sub.RowNum BETWEEN (@RowsPerPage * (@PageIndex - 1) + 1) AND (@RowsPerPage * @PageIndex)
SET @RowsPerPage = 10
SET @PageIndex = 1
SELECT sub.Title, sub.FirstName, sub.LastName
FROM
(SELECT ROW_NUMBER() OVER (ORDER BY ContactID) AS RowNum, Title, FirstName, Lastname
FROM Person.Contact) AS sub
WHERE sub.RowNum BETWEEN (@RowsPerPage * (@PageIndex - 1) + 1) AND (@RowsPerPage * @PageIndex)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-611144/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分頁功能的實現
- SQL Server 2005快速Web分頁的實現SQLServerWeb
- 分頁procedure (SQL Server)SQLServer
- jsp分頁功能的實現JS
- DataGridView分頁功能的實現View
- 使用 jQuery 實現分頁功能jQuery
- web 實現分頁列印功能Web
- Java Web(十一) 分頁功能的實現JavaWeb
- SQL Server--實現 Limit m, n 的功能SQLServerMIT
- DjangoRestFramework 實現分頁功能與搜尋功能DjangoRESTFramework
- 文章內容分頁功能實現
- SQL SERVER分頁演算法SQLServer演算法
- MySql/Oracle和SQL Server的分頁查MySqlOracleServer
- (SQL Server)分頁的儲存過程SQLServer儲存過程
- 【清清月兒】用SQL 2005的ROW_NUMBER() 實現分頁功能SQL
- 如何在SQL Server中實現 Limit m,n 的功能SQLServerMIT
- 巧用SQL Server(Ranking)實現view的排序功能SQLServerView排序
- Vue + element.ui table 分頁功能+搜尋功能的實現VueUI
- aspnetpager+repeater+oracle實現分頁功能Oracle
- WPF DataGrid分頁功能實現程式碼
- SQL Server的分頁優化及Row_Number()分頁存在的問題SQLServer優化
- 分頁的實現
- Sql Server系列:查詢分頁語句SQLServer
- Vue + Element UI + Lumen 實現通用表格功能 - 分頁VueUI
- struts2.0+E3.Table0.8分頁功能的實現
- Oracle常見SQL分頁實現方案介紹OracleSQL
- oracle資料庫用sql實現快速分頁Oracle資料庫SQL
- 分頁語法 FOR SQL SERVER 2012SQLServer
- MySQL、Oracle和SQL Server的分頁查詢語句MySqlOracleServer
- SQL Server 儲存過程的經典分頁(轉)SQLServer儲存過程
- SQL SERVER 2005分頁儲存過程SQLServer儲存過程
- Hibernate 的分頁實現
- MyBatis實現分頁的方式MyBatis
- elementUI實現分頁UI
- [20130803]ORACLE 12C TOP N SQL實現分頁功能.txtOracleSQL
- c#直接呼叫ssis包實現Sql Server的資料匯入功能C#SQLServer
- ASP.NET中Repeater控制元件實現分頁功能ASP.NET控制元件
- SQL Server 2000 的分頁查詢(儲存過程)SQLServer儲存過程