Mybatis oracle多表聯合查詢分頁數據重復的問題


Mybatis oracle多表聯合查詢分頁數據重復的問題

多表聯合查詢分頁獲取數據時出現一個詭異的現象;數據總條數正確,但有些記錄多了,有些記錄卻又少了甚至沒了。針對這個問題找了好久,最后發現是由於多個排序字段不唯一,同樣的排序順序每次運行返回的結果順序不一致,導致這樣的現象出現。

SELECT TEMP_.*
  FROM (select temp.*, ROWNUM ROWNUM_
          from (SELECT
                       t2.ID
                  FROM tableA t, tableB t2
                 WHERE t.ID = t2.AID
                   and t2.STATUS != '001'
                 ORDER BY t.CREATE_TIME DESC, t2.MIN_VALUE ASC) temp
         where ROWNUM <= 10) TEMP_
 WHERE ROWNUM_ > 0

增加排序的唯一性,修改為

SELECT TEMP_.*
  FROM (select temp.*, ROWNUM ROWNUM_
          from (SELECT
                       t2.ID
                  FROM tableA t, tableB t2
                 WHERE t.ID = t2.AID
                   and t2.STATUS != '001'
                 ORDER BY t.CREATE_TIME DESC, t2.MIN_VALUE ASC, t2.ID) temp
         where ROWNUM <= 10) TEMP_
 WHERE ROWNUM_ > 0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM