`
wattone
  • 浏览: 40506 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

请您先登录,才能继续操作

ORACLE中先ORDER BY再ROWNUM

 
阅读更多

select t.*,t.rowid,rownum from test1 t

name            KM              CJ      ROWID                   ROWNUM

张三      语文      80 AAAHhOAALAAATSIAAA 1
张三      数学      86 AAAHhOAALAAATSIAAB 2
张三      英语      75 AAAHhOAALAAATSIAAC 3
李四      语文      79 AAAHhOAALAAATSIAAD 4
李四      数学      85 AAAHhOAALAAATSIAAE 5
李四      英语      78 AAAHhOAALAAATSIAAF 6

select t.*,t.rowid,rownum from test1 t where rownum<3 order by CJ


张三      语文      80 AAAHhOAALAAATSIAAA 1
张三      数学      86 AAAHhOAALAAATSIAAB 2

采用嵌套的方式可以成功
select t.*,t.rowid,rownum from (select * from test1 t order by CJ) t where rownum <3

张三      英语      75 AAAHhOAALAAATSIAAF 1
李四      英语      78 AAAHhOAALAAATSIAAF 2

但是嵌套方式影响效率,如果非嵌套方式呢?
引用http://hi.baidu.com/yunfanleo/blog/item/09e51a1f064c66cba6866951.html中的话
rownum是一个伪列,和数据的组织方式相关,它不能唯一标识记录。
如果你没有定义主键或能唯一标识记录的字段的话,唯一标识记录的是rowid,
rowid不会再改变,但是如果你的表改变了表空间的话,rowid也可能会改变。

但是如果当你将CJ字段置为主键后执行
select t.*,t.rowid,rownum from test1 t where rownum<3 order by CJ

张三      英语      75 AAAHhOAALAAATSIAAC 1
李四      英语      78 AAAHhOAALAAATSIAAF 2
分享到:
评论

相关推荐

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

    本文将深入探讨`ORDER BY`子句在Oracle中的排序机制,以及查询时根据`IN`条件顺序输出的方法。 首先,`ORDER BY`用于指定查询结果的排序方式,可以基于一个或多个列进行升序(ASC)或降序(DESC)排序。然而,...

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

    - Oracle 中的 ROWNUM 不受 ORDER BY 影响,即无论是否使用 ORDER BY 子句,ROWNUM 都是从 1 开始计数的。 - 而在 SQL Server 中,如果需要按特定顺序为行分配行号,则必须使用 ORDER BY 与 ROW_NUMBER() 结合的...

    ORACLE 中ROWNUM用法总结

    在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,用于限制查询结果的行数,尤其是在处理大数据量或进行分页查询时。然而,`ROWNUM`的使用并不直观,尤其是当涉及到比较运算符(如`&gt;`, `&gt;=`, `=`等)时,容易引发...

    oracle_SQL中rowid与rownum的使用

    2. **优化查询**:与`ORDER BY`一起使用时,先筛选`ROWNUM`再排序可以提高效率,避免全表排序。 3. **联合查询**:在多个表的连接查询中,通过`ROWNUM`过滤结果可以减少不必要的数据处理。 五、ROWID应用示例 `...

    oracle中rownum的用法及解说

    - 为了确保`ROWNUM`的值与`ORDER BY`的结果一致,应先进行排序,再计算`ROWNUM`。 - **示例**: ```sql SELECT * FROM (SELECT ROWNUM NO, ID, NAME FROM (SELECT * FROM STUDENT ORDER BY NAME)) WHERE NO ; `...

    oracle中rownum的用法

    如果您在查询中使用了`ORDER BY`子句,那么`ROWNUM`将按照排序后的结果进行编号。例如: ```sql SELECT ROWNUM, ID, NAME FROM STUDENT ORDER BY NAME; ``` 这条语句将根据`NAME`字段对`STUDENT`表中的数据进行排序...

    在oracle中灵活使用Rownum和rowId

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

    oracle rownum 学习

    SELECT ROWNUM, ID, NAME FROM STUDENT ORDER BY NAME; ``` 可以看出,ROWNUM并不是按照NAME列来生成的序号。系统是按照记录插入时的顺序给记录排的号,ROWID也是顺序分配的。为了解决这个问题,必须使用子查询。 ...

    ROWNUM的使用技巧

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

    Oracle rownum.docx

    这意味着如果你在查询中使用了ORDER BY语句,但没有将ROWNUM放在子查询中,ROWNUM的顺序将不会按照预期的排序来生成。例如,`SELECT ROWNUM, id, name FROM student ORDER BY name`将返回ROWNUM按照数据本身存储的...

    oracle的rownum用法

    4. 如果表中的主键是按照升序插入的,且查询中没有`GROUP BY`和`ORDER BY`子句,`ROWNUM`的顺序可能与主键的顺序一致。但这是偶然的,不是`ROWNUM`的固有特性。 5. 在子查询中使用`ROWNUM`并将其传递到外部查询中时...

    oracle-rownum用法

    SELECT ROWNUM, id, name FROM student ORDER BY name; ``` 可以看出,ROWNUM 并不是按照 name 列来生成的序号。系统是按照记录插入时的顺序给记录排的号,ROWID 也是顺序分配的。为了解决这个问题,必须使用子查询...

    Oracle--ROWNUM.rar_oracle

    需要注意的是,`ROWNUM`的筛选是在数据读取过程中进行的,而非对整个数据集进行排序后筛选,所以如果你没有指定`ORDER BY`子句,返回的结果顺序可能是不确定的。 在进行分页查询时,`ROWNUM`结合`ROWCOUNT`或者`...

    oracle_SQL-rowid--rownum.zip_oracle

    需要注意的是,`ROWNUM`是在查询执行过程中动态生成的,并且在`ORDER BY`子句之前被计算。这意味着,如果不配合`ORDER BY`,`ROWNUM`的值可能不是预期的顺序。 **ROWID与ROWNUM的区别** - `ROWID`是物理地址,而`...

    oracle rownum 使用技术.pdf

    2. **ORDER BY与ROWNUM的交互**:如果需要先排序再限制结果数量,最好使用子查询的方法,确保排序后的数据被正确计数。 3. **性能考虑**:在处理大量数据时,应考虑使用其他方法如窗口函数(如RANK()、ROW_NUMBER()...

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

    这段代码通过子查询先选出前20条记录,再从中筛选出第11到20条记录作为结果返回。 2. **优化后的分页查询**:考虑到性能问题,我们可以通过添加额外的条件来优化上述查询。 ```sql SELECT t.id AS ID, o.name AS...

    如何在Oracle中实现SELECT TOP N的方法

    Oracle中常用的方法是结合`ORDER BY`和`ROWNUM`来实现。首先,对数据进行排序,然后通过`WHERE ROWNUM 来限制返回的行数。例如,要从`customer`表中按照`NAME`字段升序获取前三条记录,可以编写如下SQL: ```sql ...

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

    总结一下,`ROWNUM`在Oracle中用于限制查询返回的行数,但它的行为并不直观,特别是在与`ORDER BY`一起使用时。理解`ROWNUM`的生成原理以及其与`ORDER BY`的交互对于优化SQL查询和获取预期结果至关重要。在实际的...

    如何在Oracle中实现SELECT_TOP_N的方法

    Oracle中通常使用`ROWNUM`和`ORDER BY`结合的方式实现`SELECT TOP N`的功能。首先对数据进行排序,然后通过`ROWNUM`限制返回的行数。例如,如果我们有一个名为`CUSTOMER`的表,想按`NAME`字段的字母顺序获取前三个...

Global site tag (gtag.js) - Google Analytics