Oracle分頁查詢排序數據重復問題


在項目開發過程中大量的使用了分頁查詢,當想要讓數據按照日期排序時,出現了很多重復的數據出現。

造成這一問題出現的原因是:在數據中,日期的值不是唯一的。

我們知道

Oracle的分頁查詢是沒有進行任何排序操作的,Oracle是順序的從數據塊中讀取符合條件的數據返回到客戶端。

而Oracle的排序算法不具有穩定性,也就是說,對於鍵值相等的數據,這種算法完成排序后,不保證這些鍵值相等的數據保持排序前的順序。

解決這一問題的方法就是在后邊增加一個唯一性列,比如主鍵,問題解決。

 

select * from
(
  select a.*, rownum rn from
    ( select * from user u order by u.createdate desc, u.id desc ) a
where rownum <=20
) b
where b.rn >=0


免責聲明!

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



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