关于 Oracle分页数据重复的问题
2019独角兽企业重金招聘Python工程师标准>>>
先说问题吧。最近在测试一个新的模块,发现列表数据的前三页数据竟然是一样的。第一反应是 pageNo 的问题,debug一看,pageNo是正确的,然后一层层debug下去,所有参数都是正确的哇。难道是SQL的问题? SQL是hibernate自动生成的,我参数设置对了应该不会有问题。不过还是拿出来看看吧,把 SQL 复制出来,把对应的参数 设置进去,然后运行 SQL,卧槽!还真是 SQL 的问题!
select * from ( select row_.*, rownum rownum_ from ( select ..... order by xxx ) row_ where rownum <= 20) where rownum_ > 15.select * from ( select row_.*, rownum rownum_ from ( select ..... order by xxx) row_ where rownum <= 25) where rownum_ > 20.
上面两条 SQL 查询出来的数据是一模一样的! 只是rownum不一样而已。直觉告诉我 问题出在 rownum上,和代码无关。上网查了一下,找到了答案:http://lelong.iteye.com/blog/1931159
大概意思就是说:oracle查询的时候,如果没有指定排序条件(即order by),就是根据物理存储的位置顺序取出来,rownum是根据物理存储的位置顺序对查询结果的一个编号为列,如果查询过程中,数据物理位置发送改变(我觉得这情况几乎没啥可能发生),就会造成分页数据库重复。
如果有排序条件依然发生重复(就是我的情况),那是因为排序条件的字段值不具有唯一性,排序条件的字段至少有一个需是值唯一(可以是主键)。Oracle这里使用的排序算法不具有稳定性,对于键值相等的数据,这种算法完成排序后,不保证这些键值相等的数据保持排序前的顺序。
我的排序条件是时间,很多时间是一样的。。。所以数据重复了
所以解决方法:加一个值具有唯一性的字段作为排序条件(我选 主键ID),然后就可以了
转载于:https://my.oschina.net/u/2410853/blog/532165
关于 Oracle分页数据重复的问题相关推荐
- oracle分页数据,oracle 分页 数据重复 数据不正确
oracle 一般分页的写法为 select a.id,a.title,rownum as rn,a.create_time from (select a.* from temp a order by ...
- mybatis分页数据重复
今天测试的时候遇到个bug:分页查询出来的数据是乱序的(第一页查过的数据也会跑第二页去) 将mybatis 日志中的sql ,拿出来单独执行,发现结果是正确,为什么mybatis查出来的数据是乱序的? ...
- 如何解决MySQL order by limit语句的分页数据重复问题?
文章来源:https://www.jianshu.com/p/544c319fd838 0 问题描述 在MySQL中我们通常会采用limit来进行翻页查询,比如limit(0,10)表示列出第一页的1 ...
- mysql limit分页_MySQL order by limit 分页数据重复问题
黑客技术点击右侧关注,了解黑客的世界! Linux编程点击右侧关注,免费入门到精通! 程序员严选甄选正品好物,程序员生活指南! 作者丨猿码道 https://www.jianshu.com/p/544 ...
- oracle分页数据,在Oracle中得到分页数据
在Oracle中得到分页数据 得到DataSet的值 例子如下: /// /// 得到Colletion分页数据 /// public DataSet GetList(int PageIndex, i ...
- postgresql分页用法_postgresql分页数据重复问题的深入理解
问题背景 许多开发和测试人员都可能遇到过列表的数据翻下一页的时候显示了上一页的数据,也就是翻页会有重复的数据. 如何处理? 这个问题出现的原因是因为选择的排序字段有重复,常见的处理办法就是排序的时候加 ...
- oracle插入数据不重复,oracle插入数据重复
版本号: 业务场景(如下): 后台自动执行的SQL插入数据,出现了重复数据,且无法稳定重现,偶然会遇见一次.场景为一组数据,如10条,依次插入数据库中.采取了循环生成sql拼接,先删后插的方式,最后统 ...
- oracle 关联出现重复数据,ORACLE 分页查询出现重复记录的解决办法
今天在用Oracle分页查询数据的时候出现了重复数据,有的数据无法查出,很郁闷,想了想,找了资料,发现问题 分页语句: select * from ( select row_.*, rownum ro ...
- layui分页limit不显示_小心避坑:MySQL分页时使用 limit+order by 会出现数据重复问题...
20大进阶架构专题每日送达 来源:www.jianshu.com/p/544c319fd838 进入主题前先插一下,当当优惠码福利来一波!当当全场自营图书5折,用优惠码:J2JYFK(长按复制),满2 ...
最新文章
- STM32 基础系列教程 19 – WWDG
- Riot美术师经验分享:好设计是改出来的
- CodeForces - 1425D Danger of Mad Snakes(容斥+组合数学)
- java中所有的类都继承于_Java中所有的类都是通过直接或间接地继承()类得到的...
- Android数据库Realm实践
- 两款开源Web功能测试工具
- tensorboard ckpt pb 模型的输出节点_FlyAI小课堂:Tensorflow-模型和数据的保存和载入...
- 用MATLAB玩转机器人--第六章 用MATLAB玩转单关节机器人
- 福州大学第十四届程序设计竞赛-重现赛(Record)
- Atitit 学习的本质 团队管理与培训的本质 attilax总结 1. 学习的定义	1 2. 学习的本质是数据的处理,海量的数据,处理能力有限的大脑	2 2.1. 摘要(缩小数据体量。。这个过程有
- 【翻译】ASML Automatic Streaming Machine Learning
- ajax的state,ajax 中readystate一直为1
- DOSBox+MASM,汇编语言环境搭建
- 【从零开始学深度学习编译器】十三,如何在MLIR里面写Pass?
- 小蚁服务器维修期限,小蚁监控云服务器
- Centos 7 下joomla简体中文版安装
- element 表格分页选中
- DARKHOLE 2
- 评测丨用数字带你综合体验海思Hi3519A开发板性能
- 请用VBA编一个能将auto CAD中文字信息按所处位置填入Excel表格的程序