oracle 中使用 rownum 的一个误区
来源:互联网 发布:北京网络策划公司 编辑:程序博客网 时间:2024/05/23 10:18
一、首先看一个简单的测试
(1)创建一个简单的 TEST 表,里面插入 1-9 条数据:
(2)按照 status 字段进行排序,得到的结果:
(3)使用 rownum 取前 5 条结果:
二、测试中的两个问题
(1)上面第二步中,select 出来的结果,第 5 条记录的 userId 不是 5,而是 9
原因:oracle 使用了不稳定排序算法(即排序字段相同时,结果集不能保持原数据顺序)
(2)上面第三步中,select 出来的结果,第 5 条记录的 userId 不是 9,而是 5
原因:oracle 执行这个 sql 时,所用排序算法与第二步所用的排序算法不一样
误区:误以为 oracle 先执行了第二步的 sql,然后直接取出前 5 条数据
实际上,oracle 执行这个 sql 的步骤是这样子的:
1. 取出前 5 条数据进行排序
2. 取出第 6 条数据,与前 5 条数据一起再排序。排序后,取前 5 条数据,丢弃最后一条数据
3. 取出第 7 条数据,与前 5 条数据一起再排序。排序后,取前 5 条数据,丢弃最后一条数据
4. ...
5. 取出第 9 条数据,与前 5 条数据一起再排序。排序后,取前 5 条数据,作为结果集
参见:http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html
原文片段:
ps:我遇到的实际问题是,分页查询数据,查到某一页之后,后面每一页的内容都是一样的
0 0
- oracle 中使用 rownum 的一个误区
- Oracle中rownum的使用
- Oracle中rownum的使用
- Oracle中rownum的使用
- Oracle中ROWNUM的使用
- Oracle中rownum的使用
- Oracle中rownum的使用
- Oracle中rownum的使用
- oracle rownum用法误区
- Oracle中ROWNUM的使用技巧
- Oracle中ROWNUM的使用技巧
- Oracle中ROWNUM的使用技巧
- Oracle中ROWNUM的使用技巧。
- Oracle中 ROWNUM 的使用心得
- 关于oracle中rownum的使用探讨
- Oracle中ROWNUM的使用技巧
- Oracle 中rownum 和 rowid 的使用
- Oracle中ROWNUM的使用技巧
- java.util.Iterator细说
- 字符串详解
- STL模板总结归纳(stack,queue和priority_queue)
- Android 关闭非自身应用的界面
- Hadoop YARN常见问题以及解决方案
- oracle 中使用 rownum 的一个误区
- 【00】【小菜鸟学习虚拟化】之前言篇
- 字符流_FileReader类
- 京东2016实习生招聘笔试真题-技术岗位选择题A
- hdoj 2199二分查找
- 如何在zigbee的应用层修改PANID?
- caffe loss一直nan什么情况
- Climbing Worm
- android 本地存储的几种方式