熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

oracle 分頁問題解決方案

2022-06-13   來源: Oracle 

  昨天做完項目後讓測試測試了一把測試說分頁查詢貌似不起作用翻到第頁以後看到的數據結果都是相同的
當時我就覺得很納悶不可能啊分頁組件應該是好的咋可能有問題呢帶著疑問我打開了自己的ide在自己的機器上跑了一把果然有問題
有問題就要找問題
首先把條查詢結果相同的sql打印出來到數據庫中執行
sql

  復制代碼 代碼如下:

  select *
from (select t* rownum rn
from (select t_e_id t_e_name t_e_tel t_e_areacode
from (select teid t_e_id
tename t_e_name
tetel t_e_tel
tareaid t_e_areacode
_delete_time
decode(areaid ) orderseq
from vr_enterprise t
where teid not in (select eid from t_biz_erelation))
order by orderseq biz_delete_time nulls last) t
where rownum < )
where rn >=
sql
select *
from (select t* rownum rn
from (select t_e_id t_e_name t_e_tel t_e_areacode
from (select teid t_e_id
tename t_e_name
tetel t_e_tel
tareaid t_e_areacode
_delete_time
decode(areaid ) orderseq
from vr_enterprise t
where teid not in (select eid from t_biz_erelation))
order by orderseq biz_delete_time nulls last) t
where rownum <)
where rn >=


結果顯示大多數行是相同的
為了找到問題所在只有先一步一步的精簡化sql看在哪一步出的問題
於是找到了問題出現在where rownum<的時候數據改變了為什麼加了個where條件結果就會變呢?
表示想不通啊
沒辦法只好baidu了baidu了半天都沒人給個解釋啊
後來同事說換個寫法試試於是改了另一種寫法如下

  復制代碼 代碼如下:

  select *
from (select t* rownum rn
from (select t_e_id t_e_name t_e_tel t_e_areacode
from (select teid t_e_id
tename t_e_name
tetel t_e_tel
tareaid t_e_areacode
_delete_time
decode(areaid ) orderseq
from vr_enterprise t
where teid not in (select eid from t_biz_erelation))
order by orderseq biz_delete_time nulls last) t)m
where mrn >= and mrn <


這個方法果然湊效湊效是湊效關鍵是為什麼前面那種方法不行呢?抓問題要刨根問底
看來baidu不行得換google搜索了google搜索總是喜歡被china government牆掉沒辦法網上只好找了個chrome插件才解決了
找呀找找呀找在oracle的ask tom上tom詳細的介紹了rownum的用法在這裡l
One important thing about using this pagination query is that the ORDER BY statement should order by something unique If what you are ordering by is not unique you should add something to the end of the ORDER BY to make it so
看到這樣一句話原來用order by的時候還需要增加order by的唯一性不然rownum就會有問題哇哈哈哈太開心了功夫不費有心人呀找到問題的症結了當然就好解決了
這權當是一次排錯的經歷特此記錄下來看來google還是比baidu強大很多啊以後要好好學英文不然遇到問題沒發解決


From:http://tw.wingwit.com/Article/program/Oracle/201405/30859.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.