Oracle Order By后导分页数据重复
来源:互联网 发布:中国纺织品出口数据图 编辑:程序博客网 时间:2024/06/06 08:31
oracle使用rownum排序分页排序字段不唯一导致分页数据混乱
搬砖:
-------------------------------------------------------
oracle分页采用三层嵌套+rownum分页时,如果有order by。
前置条件:分页脚本中存在order by
问题暴露:分页时好时坏
问题本质:order by 在相同的数据下,排序具有不确定性
解决方法:最简单的办法,习惯性在order by后面加rownum或rowid,推荐加rowid
补充:如果有分析函数的情况按照具体情况处理,不可千篇一律
今天公司系统中的一个分页的界面出现了重复数据的问题,检查之后确认前端分页控件及后台的SQL语句都没有问题且该表也没有存在重复的数据记录。在继续分析之后发现是由于排序的字段出现大批的重复值造成的。
例如以下语句中,ORDER_COLUMN列并不能确定其唯一性,那么ORACLE在每次执行排序时并不能确定数据的唯一性,导致同样的排序顺序但是每次运行时并不能保证得到一样的结果。
- SELECT
- *
- FROM
- ( SELECT
- ROW_.*,
- ROWNUM ROWNUM_
- FROM
- ( SELECT
- *
- FROM T
- ORDER BY
- ORDER_COLUMN ) ROW_
- WHERE
- ROWNUM <= 10
- )
- WHERE
- ROWNUM_ > 20
有以上的结论之后处理方法也就简单明了了,Order By中的字段必须能够确保唯一即可:
- SELECT
- *
- FROM
- ( SELECT
- ROW_.*,
- ROWNUM ROWNUM_
- FROM
- ( SELECT
- *
- FROM T
- ORDER BY
- ORDER_COLUMN ,ROWID) ROW_
- WHERE
- ROWNUM <= 10
- )
- WHERE
- ROWNUM_ > 20
参考自:http://blog.csdn.net/yygg329405/article/details/53811095
阅读全文
0 0
- Oracle Order By后导分页数据重复问题解决办法。
- Oracle Order By后导分页数据重复
- order by 导致分页数据重复问题
- order by 导致分页数据重复问题
- mysql分页出现重复数据-order by
- 【mysql】order by limit分页数据重复问题
- mysql 5.6 order by limit 排序分页数据重复问题
- mysql 5.6 order by limit 排序分页数据重复问题
- oracle rownum order by 分页
- oracle 分页 order by 问题
- Oracle rownum order by 分页
- 数据库分页时order by排序不唯一,分页出现重复数据问题
- Oracle中的rownum、order by与分页
- oracle 分页 rownum 和 order by
- ORACLE: rownum、order by、分页 初步研究
- oracle中的rownum、order by与分页
- Oracle中的order by分页排序问题
- oracle中的rownum、order by与分页
- mysql 报错Communications link failure,The last packet successfully received from the server was × mill
- html5 百分比代替rem的方法
- 统计学习方法 第6章 逻辑斯谛回归与最大熵模型(2)
- 黑客走开系列1:Python使用元组做函数实参让代码更安全!
- 使用Putty和Xshell远程密钥认证1.9-1.12
- Oracle Order By后导分页数据重复
- linux配置ssh免密登录
- 新手通过SVN向eclipse中导入项目注意事项
- 奇异值分解SVD--简单理论
- 异常处理:ASM ClassReader failed to parse class file的分析与解决
- mysql并行复制降低主从同步延时的思路与启示
- apache与tomcat 连接安装问题
- (二) vue 传值
- Excel下载模板配合的工具类