T-SQL利用Row_Number函数实现分页
SQL:
CREATE PROCEDURE PagingViewTest (@currentPageIndex INT, --頁(yè)序號(hào)@pageSize INT, --頁(yè)大小@pageCount INT OUTPUT --返回值,總記錄數(shù) ) AS BEGIN--取總記錄數(shù) SELECT @pageCount=COUNT(OrderID) FROM dbo.sale_Order; --利用CTE以提高執(zhí)行效率 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
執(zhí)行結(jié)果:
一直想自己實(shí)現(xiàn)分頁(yè)的存儲(chǔ)過(guò)程,一直沒(méi)實(shí)現(xiàn),今天沒(méi)偷懶,言歸正傳,簡(jiǎn)略講下分頁(yè)的原理:分頁(yè)有幾個(gè)參數(shù),當(dāng)前頁(yè)序號(hào)(即第幾頁(yè),必須),頁(yè)大小(每頁(yè)顯示數(shù)量,必須),總頁(yè)數(shù)(可選),總記錄數(shù)(可選),前臺(tái)查詢數(shù)據(jù)時(shí)需要向后臺(tái)至少發(fā)送兩個(gè)必選參數(shù)。參數(shù)有了,SQL Server也就不愁分頁(yè)啦!利用Row_Number的主要原因是要對(duì)表進(jìn)行編號(hào),以確定表中記錄是第X頁(yè)中第X條數(shù)據(jù),執(zhí)行完Row_Number函數(shù)的表如下:
?看到rowNumber列相信大家都有思路了,只要加上where條件 前一頁(yè)面*每頁(yè)大小< rowNumber and。rowNumber <= 當(dāng)前頁(yè)面*每頁(yè)大小 即可,原理就是這些,可以基于這個(gè)思路繼續(xù)拓展,比如傳入表名實(shí)現(xiàn)通用表或者視圖的分頁(yè)等等。
今天關(guān)于SQL分頁(yè)就介紹到這里,歡迎大家批評(píng)指正。
轉(zhuǎn)載于:https://www.cnblogs.com/the-three/p/3726179.html
總結(jié)
以上是生活随笔為你收集整理的T-SQL利用Row_Number函数实现分页的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: iOS工程中的info.plist文件的
- 下一篇: mysql数据库的备份和二进制日志恢复