Oracle分頁後資料出錯的問題

2021-09-13 23:54:36 字數 793 閱讀 9485

有客戶反映,某個功能的前3頁資料是一樣的,後來檢查發現確實如此。看看sql的查詢結果,確實是前三頁一樣的,感覺sql也沒什麼問題,上網查詢資料發現,是因為排序欄位的問題。

select

*from

(select

bb.*, rownum rownum_bb

from

(select

aa.*

from

(select * from table1 t order by t.ptime desc

) aa

) bb

where

rownum <= 10

)where

rownum_bb > 0

如上面所示,sql根據t.ptime進行排序,但如果ptime有重複的話可能會出現分頁資料出問題。

如果排序中是可能有重複資料的字段,增加乙個不會重複資料的字段,比如主鍵、row_id等。修改sql如下:

select

*from

(select

bb.*, rownum rownum_bb

from

(select

aa.*

from

(select * from table1 t order by t.ptime desc,t.pkid

) aa

) bb

where

rownum <= 10

)where

rownum_bb > 0

Oracle分頁獲取資料時,資料重複錯亂問題

今天測試出的乙個bug,差點坑到了,大概場景就是在oracle資料庫分頁查詢時,第一頁的資料和第二頁的資料重複率達到百分之70以上,開始以為是前端ui控制項重新整理問題,後面發現其實不是。簡單記錄下 select from select a rownum rn from select td trad...

Oracle中的order by分頁排序問題

今天在系統測試的過程中,測試人員發現自己新新增的科目新增到系統中在頁面預設分頁查詢中沒有找到自己新加的科目 分頁過程中頁面顯示資料確實和資料表中的資料總量一致 但是通過系統的搜尋功能是可以查詢的到資料?提了乙個bug?解決bug的過程 系統中有乙個科目表subject manage表結構如下 cre...

Oracle關於rownum排序分頁的問題

應該會有跟我一樣的朋友有這樣的需求,就是需要對select查詢的集合先進行一次排序 如 按建立時間排序 然後讓生成的rownum的順序與排序後的順序一致,但是用原始的rownum無法完成先排序後按排序後的順序分頁的需求,所以就用到了這個oracle函式row number over函式 demo s...