在Sqlserver資料庫中,如果查詢表中含有自增長Id列,一般會採用select Top的方式來數據的分頁操作。而實際上很多數據表設計的時候,不一定含有自增長Id列,那麼資料庫沒有Id自增列的時候要對數據分頁怎麼辦呢,此時則需要使用ROW_NUMBER()函數來對數據分頁,ROW_NUMBER() ...
在Sqlserver資料庫中,如果查詢表中含有自增長Id列,一般會採用select Top的方式來數據的分頁操作。而實際上很多數據表設計的時候,不一定含有自增長Id列,那麼資料庫沒有Id自增列的時候要對數據分頁怎麼辦呢,此時則需要使用ROW_NUMBER()函數來對數據分頁,ROW_NUMBER()一般與OVER(order by)一起連用。
使用Row_Number來數據分頁的格式如下:
With tempTb AS ( Select ROW_NUMBER() OVER(order by 排序的列 ASC) AS RowNumber,* FROM 數據表_Table ) Select * FROM tempTb Where RowNumber>開始行號 AND RowNumber<結束行號;
舉個例子,我們要查詢Student表中的學生數據,按學生出生日期從前到後排序,取出出生日期排在第31位到第60位的數據,語句如下:
With tempTb AS ( Select ROW_NUMBER() OVER(order by BirthDay ASC) AS RowNumber,* FROM Student ) Select * FROM tempTb Where RowNumber>30 AND RowNumber<=60
備註:原文轉載自Sqlserver使用ROW_NUMBER()函數進行數據分頁_IT技術小趣屋。