1. 程式人生 > >row_number()分頁返回結果順序不確定

row_number()分頁返回結果順序不確定

之前通過row_number()實現分頁查詢時:
select top [PageSize] * 
from (
       select row_number() over (order by id desc) as RowNum,*
        from table 
     ) as A
where RowNum > (PageIndex - 1)  * PageSize
ROW_NUMBER()是非確定性函式,當如下條件滿足時,結果集順序是確定的:     1、分割槽列的值是唯一的。( PARTITION BY)     2、order by排序的值是唯一的。     3、分割槽列的值和order by排序的值的組合是唯一的。 固用between  and  代替,查詢出來的結果再次排序:
select
* from (   select row_number() over (order by id desc) as RowNum,* from table ) as A where RowNum between (PageIndex - 1) * PageSize + 1 and PageIndex * PageSize order by RowNum asc