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

简介: 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
相关文章
|
SQL Oracle 关系型数据库
Oracle之你知道哪几种多表Insert的方式?
Oracle之你知道哪几种多表Insert的方式?
202 0
|
Oracle 关系型数据库 MySQL
oracle 内联同时删除多表
在 MySql 中,内联同时删除多表可以使用这样的语法: DELETE t1,t2 FROM table1 AS t1 INNER JOIN table2 t2 ... INNER JOIN table3 t3 .
1302 0
|
Oracle 关系型数据库 MySQL
MYSQL多表更新删除以及和ORACLE的对比
MYSQL多表更新操作, 一般来说这类操作可以用IN和NOT IN,至少在ORACLE中可以这样做,ORACLE对IN和NOT IN的优化程度很高 一般使用SEMI JOIN和ANTI JOIN进行半连接,抛弃不需要的行,但是MYSQL在这方面性能还是有一些问题, 所以建议使用连接的方式如下,对于联合UPDATE ORACLE可以使用MERGE来代替比如 update a,b set a.name=b.name where a.id=b.id; ORACLE是没有这种语法的,一句话MYSQL的连接查询在ORACLE中都可以有相应的代替。
1004 0
|
SQL Oracle 关系型数据库
Oracle多表连接查询
多个表之间关系:一对多|(多对一)  多对多 一对一 3种 关系的完整性约束:实体完整性、参照完整性、用于定义的完整性。 必须满足实体完整性和参照完整性. 实体完整性:规定了字段|属性的约束 参照完整性:关系与关系之间的引用 某个字段的约束  外键   一.笛卡尔集  笛卡尔集会在下面条件下产生: •  省略连接条件 •  连接条件无效 •  所有表中的所有行互相连接 为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件。
1078 0
|
2月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
264 93
|
15天前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
|
4月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
2月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
193 8