`

oracle中 rownum 对排序的影响

阅读更多

rownum 很早就会用,以前也经常用在分页查询,但今天发现了一个新问题:

1. 标准的rownum分页查询使用方法:

select *
  from (select c.*, rownum rn from content c)
 where rn >= 1
   and rn <= 5

 

2. 但是如果, 加上order by addtime 排序则数据显示不正确

select *
  from (select c.*, rownum rn from content c order by addtime)
 where rn >= 1
   and rn <= 5

 

解决方法,再加一层查询,则可以解决,

select *
  from (select rownum rn, t.*
          from (select title, addtime from content order by addtime desc) t)
 where rn >= 1
   and rn <= 5

 

如果要考虑到效率的问题,上面的还可以优化成(主要两者区别)

select *
  from (select rownum rn, t.*
          from (select title, addtime from content order by addtime desc) t
         where rownum <= 10)
 where rn >= 3

分享到:
评论

相关推荐

    oracle中rownum在结果集中排序的使用.doc

    oracle中rownum在结果集中排序的使用.doc

    oracle中rownum的用法及解说

    - 如果在一个查询中没有对结果集进行排序或过滤,则`ROWNUM`将按照数据在表中的物理顺序进行编号。 2. **ROWNUM的限制与条件:** - `ROWNUM`不能用于`WHERE`子句中作为筛选条件。 - 使用`ROWNUM`时,通常需要将...

    ROWNUM的使用技巧

    ROWNUM 是 Oracle 中的一种伪列,它可以根据返回记录生成一个序列化的数字。利用 ROWNUM,我们可以生产一些原先难以实现的结果输出,但是因为它是伪列的特殊性,在使用时需要注意一些事项,以免掉入“陷阱”。 特殊...

    oracle中rownum的用法

    为了避免排序对`ROWNUM`的影响,可以先执行排序操作,然后再使用`ROWNUM`。例如: ```sql SELECT ROWNUM, ID, NAME FROM (SELECT * FROM STUDENT ORDER BY NAME); ``` 这种写法首先按`NAME`排序,然后再对排序后的...

    oracle rownum 的使用 和sqlserver有区别的!

    它在 Oracle 数据库中有着广泛的应用场景,尤其是在需要对查询结果进行分页显示、排序或者统计特定范围内的记录时尤为重要。本文将详细介绍 Oracle 中 ROWNUM 的使用方法,并与 SQL Server 中相应的功能进行对比分析...

    oracle rownum和distinct

    "Oracle 中的 ROWNUM 和 DISTINCT" Oracle 中的 ROWNUM 和 DISTINCT 是两个非常重要的关键词,它们在查询数据时发挥着至关重要的作用。然而,许多开发者在使用这两个关键词时,却常常会遇到一些不太理解的地方,...

    Oracle中ROWNUM的使用技巧.docx

    为了避免这个问题,可以先对查询结果进行排序,然后在外部查询中使用ROWNUM,如子查询或连接。 2. **分页查询**:ROWNUM可用于实现分页查询,展示数据的特定页码。一个常见方法是使用嵌套查询,先为所有记录分配...

    oracle-rownum用法

    在 Oracle 中,ROWNUM 是在取数据的时候产生的序号,所以想对指定排序的数据去指定的 ROWNUM 行数据就必须注意了。例如: ```sql SELECT ROWNUM, id, name FROM student ORDER BY name; ``` 可以看出,ROWNUM 并不...

    如何解决Oracle分页查询中排序与效率问题

    本文主要解决 Oracle 分页查询中排序与效率问题,通过实践和分析,提供了两种解决方案,并对比了两种方法的优缺点。 知识点 1: Oracle 分页查询的基本概念 Oracle 分页查询是指在查询结果中,通过限制行数来实现...

    oracle rownum 学习

    Oracle中的ROWNUM是在取数据的时候产生的序号,所以想对指定排序的数据去指定的ROWNUM行数据就必须注意了。例如: ```sql SELECT ROWNUM, ID, NAME FROM STUDENT ORDER BY NAME; ``` 可以看出,ROWNUM并不是按照NAME...

    oracle的rownum用法

    Oracle的`ROWNUM`是一个伪列,它在查询结果集中自动添加,并从1开始为每一行赋予一个唯一的数字。在处理大数据集时,`ROWNUM`常用于限制返回的行数,实现分页或者筛选特定范围的记录。然而,正确理解和使用`ROWNUM`...

    Oracle数据库中ORDER BY排序和查询按IN条件的顺序输出

    在描述中提到的问题中,当使用`ORDER BY`对包含非唯一值的列进行排序,并结合分页查询时,发现不同页码的数据可能会有重复。这进一步证实了`ORDER BY`在Oracle中的不稳定特性。在没有唯一索引或主键约束的情况下,...

    oracle排序

    Oracle 排序是指在 Oracle 数据库中对数据进行排序的操作。排序是数据库查询语言中最基本的操作之一,它可以根据不同的条件对数据进行排序,实现数据的有序排列。 一、按字符方式排序 在 Oracle 中,可以使用 ...

    解决Oracle分页查询中排序与效率问题

    通过对Oracle分页查询中的排序与效率问题的深入探讨,我们可以得出以下结论: - 使用合适的索引可以显著提高查询速度。 - 优化查询结构,减少不必要的计算和数据访问。 - 考虑使用高级技术如分区等来进一步提高大型...

    Oracle rownum.docx

    Oracle的ROWNUM是一个非常重要的概念,它在数据库查询中起到限制返回结果数量和进行特定行选择的作用。ROWNUM是一个伪列,表示从查询结果中返回的每一行的序列号,从1开始递增。 首先,当使用ROWNUM等于某个特定值...

    对Oracle 排序中的几种常用排序的介绍

    通过这些排序方法,你可以根据实际需求对Oracle数据库中的数据进行灵活排序和分页操作。在处理中文数据时,尤其要注意使用`NLSSORT`和相应的`NLS_SORT`参数,以确保排序的正确性。同时,合理利用DECODE和NVL函数可以...

    Oracle利用rownum查询出部分数据[归类].pdf

    在这个嵌套查询中,首先根据`AAA`列对数据进行排序,然后生成`ROWNUM`,最后在外层查询中筛选出`ROWNUM`小于4的行,从而得到期望的结果。 总结一下,`ROWNUM`在Oracle中用于限制查询返回的行数,但它的行为并不直观...

    在oracle中灵活使用Rownum和rowId

    ### 在Oracle中灵活使用Rownum和RowId 在Oracle数据库中,`ROWNUM` 和 `ROWID` 是两个非常重要的概念,它们可以帮助我们在查询数据时实现更灵活的数据管理。本文将详细介绍这两个概念的区别及其使用方法,并通过...

    oracle中rownum和row_number()

    一、oracle中rownum 用于从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀。 1、rownum 对于

    oracle中取中间记录的方法

    本文将详细介绍如何利用Oracle中的`MINUS`操作符以及`ROWNUM`伪列来实现这一功能。 #### ROWNUM伪列简介 在介绍具体方法之前,我们首先了解一下`ROWNUM`伪列的基本概念。`ROWNUM`是Oracle提供的一种特殊的伪列,它...

Global site tag (gtag.js) - Google Analytics