亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

oracle分頁查詢結果集重復問題&解決方法

發布時間:2020-08-10 11:26:20 來源:網絡 閱讀:1941 作者:GeeYL 欄目:關系型數據庫

做項目時,無意間發現了分頁上的一個bug,在此記錄一下:

首先手動將后臺輸出的sql語句復制進oracle中查看,以便排查錯誤,對比以下視圖前10條的結果集與10到20條的結果集,發現大部分記錄出現重復現象,SQL語句如下:

--前10條記錄
select *

  from (select row_.*, rownum rownum_

          from (select t.idcard, count(1)

                  from sampling.v_unvoucher_blacklist t

                 where 1 = 1

                 group by t.idcard

                 order by count(1) asc) row_

         where rownum <= 10)

 where rownum_ > 0;

--第11條-第20條記錄
select *

  from (select row_.*, rownum rownum_

          from (select t.idcard, count(1)

                  from sampling.v_unvoucher_blacklist t

                 where 1 = 1

                 group by t.idcard

                 order by count(1) asc) row_

         where rownum <= 20)

 where rownum_ > 10;

出現以上錯誤時,先是反復增加/刪除where之后的條件,不斷測試,貌似發現了一些端倪,錯誤記錄都發生在count(1)的值相同時,于是在網上好一陣搜索,可還是沒有找到解決辦法;


沒辦法了,最后還是硬著頭皮去找官網的一些demo,從中觀察用法,探索者、摸索著,就有了以下的版本,經測試可以返回正確結果集,修改后如下:

select *

  from (select row_1.*, rownum rownum_

          from (select * from (select t.idcard idcard, count(1) total

                  from sampling.v_unvoucher_blacklist t

                 where 1 = 1

                 group by t.idcard)

                 order by total,rownum asc) row_1

         where rownum <= 10)

 where rownum_ > 0;

總結:order by語句應當遵循條件唯一性原則,否則oracle不保證每次查詢的結果集都相同。


詳細介紹請參考oracle官網:

http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

奉新县| 潞西市| 滨州市| 伽师县| 滕州市| 逊克县| 江北区| 梁河县| 莲花县| 新密市| 吐鲁番市| 开江县| 正安县| 白银市| 股票| 石景山区| 民勤县| 卢氏县| 宣化县| 蚌埠市| 鹿泉市| 廉江市| 墨竹工卡县| 通城县| 苍溪县| 西峡县| 太保市| 平阴县| 冷水江市| 永和县| 丰台区| 上犹县| 科技| 夹江县| 扎赉特旗| 怀柔区| 奇台县| 海口市| 无棣县| 广西| 宁波市|