91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

大丰市| 宿州市| 黄陵县| 额尔古纳市| 万载县| 道真| 上饶市| 榆社县| 冷水江市| 临漳县| 永州市| 财经| 溧阳市| 阆中市| 集贤县| 新干县| 苗栗县| 布尔津县| 延寿县| 绥中县| 宁德市| 太湖县| 杭州市| 赤城县| 喀喇| 海南省| 青岛市| 丹阳市| 唐海县| 视频| 安顺市| 保康县| 行唐县| 榆中县| 邛崃市| 龙口市| 察雅县| 普定县| 临武县| 托里县| 隆化县|