Fork me on GitHub

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
posted @   秋楓  阅读(3902)  评论(1编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示