T-SQL利用Row_Number函數實現分頁

SQL:sql

CREATE PROCEDURE PagingViewTest
(
   @currentPageIndex INT, --頁序號
   @pageSize INT, --頁大小
   @pageCount INT OUTPUT  --返回值,總記錄數
)
AS
BEGIN
--取總記錄數 SELECT @pageCount=COUNT(OrderID) FROM dbo.sale_Order; --利用CTE以提升執行效率 WITH Result AS ( SELECT ROW_NUMBER() OVER(ORDER BY OrderID) AS rowNumber,* FROM sale_order s ) SELECT * FROM Result r WHERE ((@currentPageIndex-1)*@pageSize < rowNumber) AND (rowNumber <=@currentPageIndex*@pageSize) END

執行結果:函數

一直想本身實現分頁的存儲過程,一直沒實現,今天沒偷懶,言歸正傳,簡略講下分頁的原理:分頁有幾個參數,當前頁序號(即第幾頁,必須),頁大小(每頁顯示數量,必須),總頁數(可選),總記錄數(可選),前臺查詢數據時須要向後臺至少發送兩個必選參數。參數有了,SQL Server也就不愁分頁啦!利用Row_Number的主要緣由是要對錶進行編號,以肯定表中記錄是第X頁中第X條數據,執行完Row_Number函數的表以下:blog

 看到rowNumber列相信你們都有思路了,只要加上where條件 前一頁面*每頁大小< rowNumber and。rowNumber <= 當前頁面*每頁大小 便可,原理就是這些,能夠基於這個思路繼續拓展,好比傳入表名實現通用表或者視圖的分頁等等。class

今天關於SQL分頁就介紹到這裏,歡迎你們批評指正。效率

相關文章
相關標籤/搜索