`
晨之风
  • 浏览: 1582 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

最近再写Oracle的ROWNUM分页时,发现一个问题,高手进来讨论下

阅读更多

 

    以下是我写的两个语句,都可以实现分页,但是问题是结果集竟然不一样,看官网文档对ROWNUM的原理描述,还是不太清楚怎么回事,请大家指教。

 

语句1:

select e2.* from (select e1.*, rownum rn from (select * from illegalinfo order by sitename) e1) e2 where e2.rn < 101 and e2.rn >= 90;

内层查出基本数据,中间层子查询加上ROWNUM, 最外层用rn限制结果集

 

语句2:

select e2.* from (select e1.*, rownum rn from (select * from illegalinfo order by sitename) e1 where rownum < 101) e2 where e2.rn >= 90;

内层查出基本数据,在中间层子查询中加上ROWNUM、砍掉一部分记录,外面再筛选出最终结果集

 

 

语句1结果集:



 

语句2结果集:



 

可以看到两条语句查出的语句结果集是不一样的(红色框标出来的部分),具体什么原因还不清楚,请高手指点迷津!

  • 大小: 23.5 KB
  • 大小: 23.8 KB
0
0
分享到:
评论

相关推荐

    对于 Oracle 的 rownum 问题

    可如果用 select rownum,c1 from t1 where rownum &gt; 10 (如果写下这样的查询语句,这时候在您的头脑中应该是想得到表中后面10条记录),你就会发现,显示出来的结果要让您失望了,也许您还会怀疑是不谁删了一些记录,...

    Oracle 3种分页SQL方法比较

    这种方法简单直接,但存在一个问题:由于ROWNUM是在查询开始时就确定的,所以它不能保证结果集的顺序,除非在外部查询中指定ORDER BY。 2. ROWNUM结合子查询方法: 为了解决ROWNUM无法与ORDER BY一起使用的问题,...

    oracle分页,比较简单很好懂

    Oracle数据库在处理大数据量时,分页查询是一个非常重要的功能,它可以帮助用户高效地浏览和检索数据,而无需一次性加载所有结果。Oracle提供多种方法来实现分页,这些方法各有优缺点,适用于不同的场景。本篇文章将...

    oracle分页

    使用`ROWNUM`进行分页可能会遇到性能问题,因为它会先获取所有满足条件的行,然后再筛选出需要的页。为了优化,可以尝试使用`OFFSET-FETCH`或`FETCH FIRST`语法(需要Oracle 12c及以上版本),或者结合`CTE(公用表...

    oracle数据库表的分页

    在Oracle数据库中,分页查询是一项非常常见的操作,特别是在处理大量数据时,为了提高用户体验,我们通常会将数据分批加载,这就是所谓的“分页”。Java作为一种常用的后端开发语言,提供了多种方式来实现对Oracle...

    我的Oracle分页实现

    在处理大数据时,ROWNUM可能会遇到问题,因为它会在内存中累积所有符合条件的行,然后再过滤。因此,对于大数据量的分页,使用窗口函数或新的FETCH语法通常更有效。 通过理解这些Oracle分页技术,开发者可以更好地...

    MLDN魔乐科技_Oracle课堂19_修改约束、ROWNUM

    ROWNUM是Oracle中的一个伪列,它在查询结果集中为每一行分配一个唯一的数字。在处理大数据集时,ROWNUM可以帮助我们实现分页或者只获取前n条记录。例如,如果我们只想获取前10条记录,可以这样写: ```sql SELECT * ...

    解析rownum

    在Oracle数据库中,`ROWNUM`是一个非常重要的概念,它是一个伪列,用于标识查询结果集中每一行的顺序。在处理大数据集时,`ROWNUM`通常被用来实现分页功能,即限制返回的结果数量。下面我们将深入探讨`ROWNUM`的使用...

    SQL逻辑和物理分页

    相比之下,物理分页是数据库系统直接提供的功能,如SQL的`LIMIT`和`OFFSET`子句(在MySQL中)或`ROWNUM`(在Oracle中)。这种方法通常更高效,因为它只从数据库中获取每页所需的数据。 5. **优化逻辑分页** 为了...

    Oracle2.pdf

    接下来,我们讨论子查询,这是SQL语言中的一个重要特性,允许在一个查询中嵌套另一个查询。 1. 子查询可以返回单行单列的结果,通常用于条件判断。例如,找出工资高于平均工资的员工,可以先用子查询获取平均工资,...

    ORACLE 合辑

    - ROWNUM和ORDER BY一起使用时,需确保先进行排序再使用ROWNUM。 #### 性能 **ROWNUM的使用陷阱:** - 应避免对ROWNUM进行等于、大于等于或大于的操作,因为这些操作可能导致非预期的结果。 **ROWNUM和ORDER BY:...

    Oracle到mysql转换的问题总结.docx

    - MySQL不允许在一个表中先查询再更新,但可以通过为子查询的表添加别名来解决这个问题。 3. **自动增长字段**: - MySQL有`AUTO_INCREMENT`字段,插入新记录时系统自动递增。而Oracle需要创建序列对象,插入时...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    认真听课、多思考问题、多动手操作、有问题一定要问、多参与讨论、多帮组同学 五、 体系结构 oracle的体系很庞大,要学习它,首先要了解oracle的框架。oracle的框架主要由物理结构、逻辑结构、内存分配、后台进程...

    oracle练习及答案

    - **SQL语句**: 找到下一个星期一: - `SELECT NEXT_DAY(SYSDATE, 'MONDAY') FROM DUAL;` #### 22. 计算3个月之后的日期 - **知识点**: 使用`ADD_MONTHS`函数添加月份。 - **SQL语句**: 计算三个月后的日期: - `...

    java高级工程师面试题

    5. 有一种细菌,经过一分钟分裂为2个,再过一分钟,分裂为4个,这样,将一个细菌放在一个瓶子里面,一个小时后瓶子被细菌充满了。现在假设一开始放入瓶中的为两个细菌,那么到充满瓶子要多长的时间?这道题目考查了...

    java必备知识点大全.pdf

    Java必备知识点大全的内容非常丰富,涵盖了Java语言的基础知识、常用的框架以及数据库的应用等方面,是每一个Java开发者学习和面试时的重要参考。下面是对文档中各个知识点的详细解析。 基础篇: JDK常用的包:Java...

    2009达内SQL学习笔记

    在处理SQL语句时,其中所有的空格都被忽略(空格只用来分开单词,连续多个空格当一个用)。 SQL语句可以在一行上写出,建议多行写出,便于阅读和调试。 多条SQL语句必须以分号分隔。多数DBMS不需要在单条SQL语句后...

    J2EE武功秘籍

    - 定义对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 #### 第六层: 算法招式辨析 **1. 递归算法** - **递归**是一种重要的算法思想,通过函数自身调用...

Global site tag (gtag.js) - Google Analytics