oracle中order by造成分頁錯誤


問題:今天在工作中,在service中調用分頁查詢列表接口的時候,返回的到頁面的數據中總是存在缺失的數據,還有重復的數據。

分析:select * from (select ROWNUM rn,t.* from (select * from student order by class) t where ROWNUM <![CDATA[<]]>#{1.endIndex}) where rn <![CDATA[>=]]>#{1.startIndex}

當endIndex為3和為5的時候ROWNUM發生了變化

id

student

class

rownum

1

zhao

2

1

2

qian

2

2

3

li

2

3

 

id

stuent

class

rownum

1

zhao

2

1

3

li

2

2

4

song

2

3

2

qian

2

4

5

yang

2

5

在上表中qian 和li 的rownum發生了變化

總結:oracle分頁語句中:

1 不存在order by 則系統根據rowid來排序

2 若存在order by 則order by 后面的限制的列必須要能確定唯一,或者最小粒度的列能確定唯一(如id列)如上class都相同,則可以加上

order by class,id   或者  order by class,rowid


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM