主頁 > 知識(shí)庫 > oracle 分頁問題解決方案

oracle 分頁問題解決方案

熱門標(biāo)簽:百度地圖標(biāo)注員是干什么 地圖標(biāo)注付款了怎么找不到了 溫州人工外呼系統(tǒng) 外呼系統(tǒng)鄭州 貴陽智能電銷機(jī)器人官網(wǎng) 北京外呼系統(tǒng)公司排名 北京營銷外呼系統(tǒng)廠家 沈陽400電話是如何辦理 外呼系統(tǒng)口號(hào)

昨天做完項(xiàng)目后讓測(cè)試測(cè)試了一把,測(cè)試說分頁查詢貌似不起作用,翻到第4頁以后,看到的數(shù)據(jù)結(jié)果都是相同的。
當(dāng)時(shí)我就覺得很納悶,不可能啊,分頁組件應(yīng)該是好的,咋可能有問題呢。帶著疑問,我打開了自己的ide,在自己的機(jī)器上跑了一把,果然有問題。
有問題就要找問題
首先把2條查詢結(jié)果相同的sql打印出來到數(shù)據(jù)庫中執(zhí)行:
sql1:

復(fù)制代碼 代碼如下:

select *
from (select t.*, rownum rn
from (select t_e_id, t_e_name, t_e_tel, t_e_areacode
from (select t.eid t_e_id,
t.ename t_e_name,
t.etel t_e_tel,
t.areaid t_e_areacode,
t.biz_delete_time,
decode(areaid, '0730', '0', '1') orderseq
from vr_enterprise t
where t.eid not in (select eid from t_biz_erelation))
order by orderseq, biz_delete_time nulls last) t
where rownum 25)
where rn >= 19
sql2:
select *
from (select t.*, rownum rn
from (select t_e_id, t_e_name, t_e_tel, t_e_areacode
from (select t.eid t_e_id,
t.ename t_e_name,
t.etel t_e_tel,
t.areaid t_e_areacode,
t.biz_delete_time,
decode(areaid, '0730', '0', '1') orderseq
from vr_enterprise t
where t.eid not in (select eid from t_biz_erelation))
order by orderseq, biz_delete_time nulls last) t
where rownum 18)
where rn >= 12

結(jié)果顯示大多數(shù)行是相同的。
為了找到問題所在,只有先一步一步的精簡(jiǎn)化sql,看在哪一步出的問題。
于是找到了,問題出現(xiàn)在where rownum18的時(shí)候數(shù)據(jù)改變了,為什么加了個(gè)where條件結(jié)果就會(huì)變呢?
表示想不通啊。。。。。
沒辦法,只好baidu了,baidu了半天,都沒人給個(gè)解釋啊。。。。。
后來同事說,換個(gè)寫法試試,于是改了另一種寫法,如下:
復(fù)制代碼 代碼如下:

select *
from (select t.*, rownum rn
from (select t_e_id, t_e_name, t_e_tel, t_e_areacode
from (select t.eid t_e_id,
t.ename t_e_name,
t.etel t_e_tel,
t.areaid t_e_areacode,
t.biz_delete_time,
decode(areaid, '0730', '0', '1') orderseq
from vr_enterprise t
where t.eid not in (select eid from t_biz_erelation))
order by orderseq, biz_delete_time nulls last) t)m
where m.rn >= 1 and m.rn 25

這個(gè)方法果然湊效,湊效是湊效,關(guān)鍵是為什么前面那種方法不行呢?抓問題要刨根問底。
看來baidu不行,得換google搜索了。google搜索總是喜歡被china government墻掉,沒辦法,網(wǎng)上只好找了個(gè)chrome插件才解決了。
找呀找找呀找,在oracle的ask tom上,tom詳細(xì)的介紹了rownum的用法,在這里http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html
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的時(shí)候還需要增加order by的唯一性,不然rownum就會(huì)有問題。哇哈哈哈,太開心了,功夫不費(fèi)有心人呀,找到問題的癥結(jié)了,當(dāng)然就好解決了。
這權(quán)當(dāng)是一次排錯(cuò)的經(jīng)歷,特此記錄下來,看來google還是比baidu強(qiáng)大很多啊,以后要好好學(xué)英文,不然遇到問題沒發(fā)解決。

您可能感興趣的文章:
  • Oracle數(shù)據(jù)庫系統(tǒng)緊急故障處理方法
  • ORACLE數(shù)據(jù)庫應(yīng)用開發(fā)常見問題及排除
  • Oracle數(shù)據(jù)庫TNS常見錯(cuò)誤的解決方法匯總
  • 簡(jiǎn)析Oracle數(shù)據(jù)庫常見問題及解決方案

標(biāo)簽:通遼 衢州 包頭 淮北 衡水 定西 溫州 潮州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《oracle 分頁問題解決方案》,本文關(guān)鍵詞  oracle,分頁,問題,解決方案,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《oracle 分頁問題解決方案》相關(guān)的同類信息!
  • 本頁收集關(guān)于oracle 分頁問題解決方案的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章