a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

oracle 分頁問題解決方案

2024-08-29 13:55:48
字體:
供稿:網(wǎng)友

昨天做完項目后讓測試測試了一把,測試說分頁查詢貌似不起作用,翻到第4頁以后,看到的數(shù)據(jù)結(jié)果都是相同的。
當時我就覺得很納悶,不可能啊,分頁組件應(yīng)該是好的,咋可能有問題呢。帶著疑問,我打開了自己的ide,在自己的機器上跑了一把,果然有問題。
有問題就要找問題:
首先把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ù)行是相同的。
為了找到問題所在,只有先一步一步的精簡化sql,看在哪一步出的問題。
于是找到了,問題出現(xiàn)在where rownum<18的時候數(shù)據(jù)改變了,為什么加了個where條件結(jié)果就會變呢?
表示想不通啊。。。。。
沒辦法,只好baidu了,baidu了半天,都沒人給個解釋啊。。。。。
后來同事說,換個寫法試試,于是改了另一種寫法,如下:

復(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


這個方法果然湊效,湊效是湊效,關(guān)鍵是為什么前面那種方法不行呢?抓問題要刨根問底。
看來baidu不行,得換google搜索了。google搜索總是喜歡被china government墻掉,沒辦法,網(wǎng)上只好找了個chrome插件才解決了。
找呀找找呀找,在oracle的ask tom上,tom詳細的介紹了rownum的用法,在這里
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就會有問題。哇哈哈哈,太開心了,功夫不費有心人呀,找到問題的癥結(jié)了,當然就好解決了。
這權(quán)當是一次排錯的經(jīng)歷,特此記錄下來,看來google還是比baidu強大很多啊,以后要好好學(xué)英文,不然遇到問題沒發(fā)解決。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久草在线资源福利站 | 久久久网 | 午夜免费一区二区播放 | 久久久久久久久99精品 | 国产成人+综合亚洲+天堂 | 网址你懂的在线观看 | 手机看片国产精品 | 亚洲综合在线视频 | 色99在线| 日韩免费av网站 | 欧美一区二区久久 | 伊人在线 | 欧美精品一区二区三区在线播放 | 日日干天天干 | 久久精品视频久久 | 午夜免费视频 | 影音先锋在线看片资源 | 日本免费黄色网址 | 99色综合 | 国产亚洲精品精品国产亚洲综合 | 麻豆久久 | 欧美精品一区二区三区在线播放 | va在线 | 欧美综合一区二区 | 黄色在线观看 | a中文字幕 | 欧美日韩一级视频 | 91污视频在线 | 中文字幕一级 | 综合网视频 | 亚洲精品日韩激情欧美 | 国产一区二区电影 | 欧洲毛片 | 一级片av | 国产视频精品视频 | 国产精品久久久久久久久久 | 爱爱爱av | 国产欧美综合一区二区三区 | 精品视频一区二区三区 | 九九久久国产 | 天天干 夜夜操 |