日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > Oracle > 一次oracle分頁所遇到的問題

一次oracle分頁所遇到的問題

來源:程序員人生   發布時間:2014-06-08 21:47:07 閱讀次數:4929次

昨天做完項目后讓測試測試了一把,測試說分頁查詢貌似不起作用,翻到第4頁以后,看到的數據結果都是相同的。

當時我就覺得很納悶,不可能啊,分頁組件應該是好的,咋可能有問題呢。帶著疑問,我打開了自己的ide,在自己的機器上跑了一把,果然有問題。

有問題就要找問題:

首先把2條查詢結果相同的sql打印出來到數據庫中執行:

sql1:

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
結果顯示大多數行是相同的。

為了找到問題所在,只有先一步一步的精簡化sql,看在哪一步出的問題。

于是找到了,問題出現在where rownum<18的時候數據改變了,為什么加了個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 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
這個方法果然湊效,湊效是湊效,關鍵是為什么前面那種方法不行呢?抓問題要刨根問底。

看來baidu不行,得換google搜索了。google搜索總是喜歡被china government墻掉,沒辦法,網上只好找了個chrome插件才解決了。

找呀找找呀找,在oracle的ask tom上,tom詳細的介紹了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的時候還需要增加order by的唯一性,不然rownum就會有問題。哇哈哈哈,太開心了,功夫不費有心人呀,找到問題的癥結了,當然就好解決了。

這權當是一次排錯的經歷,特此記錄下來,看來google還是比baidu強大很多啊,以后要好好學英文,不然遇到問題沒發解決。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩精品一区二区三区四区视频 | 免费国产一区 | 美女18黄网站 | 国产一级特黄aaa | 精品国产麻豆 | 视频一区在线观看 | 91网站链接 | 国产精品久久久久久久久久免费看 | 精品久久久久久久久久久久 | 三级毛片在线 | 成年人视频免费在线观看 | 色网在线观看 | 国产在线不卡视频 | 日韩精品免费一区二区在线观看 | 国产日韩欧美在线观看 | 日日日操操操 | 中文字幕久久精品 | 日韩精品免费在线 | 成人在线观看免费 | 中文字幕不卡在线 | 久久精品国产亚洲一区二区三区 | 爱爱免费观看视频 | 国产视频高清 | 麻豆视频一区二区 | 亚洲精品一区二区三 | 国产一区二区三区免费观看在线 | 久久久精选 | 国产成人免费视频网站视频社区 | 欧美偷拍综合 | 精品国产区 | 精品国产麻豆 | 亚洲精品久久久久久一区二区 | 一区二区三区在线 | 午夜激情视频在线观看 | 精品欧美视频 | 一区二区三区在线电影 | 99精品视频在线 | 欧美一区在线视频 | 日韩专区在线 | 日韩精品在线免费观看 | 国产精品久久久久久久久潘金莲 |