1. 程式人生 > 其它 >Sqlserver資料庫中無自增Id的情況下使用ROW_NUMBER()函式進行資料分頁

Sqlserver資料庫中無自增Id的情況下使用ROW_NUMBER()函式進行資料分頁

https://www.cnblogs.com/xu-yi/p/10623480.html

在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