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
