Mybatis oracle多表联合查询分页数据重复的问题

  1. 云栖社区>
  2. 博客>
  3. 正文

Mybatis oracle多表联合查询分页数据重复的问题

无声胜有声 2017-01-15 20:48:00 浏览661
展开阅读全文

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

网友评论

登录后评论
0/500
评论
无声胜有声
+ 关注