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
分享到:
相关推荐
本文将深入探讨`ORDER BY`子句在Oracle中的排序机制,以及查询时根据`IN`条件顺序输出的方法。 首先,`ORDER BY`用于指定查询结果的排序方式,可以基于一个或多个列进行升序(ASC)或降序(DESC)排序。然而,...
- Oracle 中的 ROWNUM 不受 ORDER BY 影响,即无论是否使用 ORDER BY 子句,ROWNUM 都是从 1 开始计数的。 - 而在 SQL Server 中,如果需要按特定顺序为行分配行号,则必须使用 ORDER BY 与 ROW_NUMBER() 结合的...
在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,用于限制查询结果的行数,尤其是在处理大数据量或进行分页查询时。然而,`ROWNUM`的使用并不直观,尤其是当涉及到比较运算符(如`>`, `>=`, `=`等)时,容易引发...
2. **优化查询**:与`ORDER BY`一起使用时,先筛选`ROWNUM`再排序可以提高效率,避免全表排序。 3. **联合查询**:在多个表的连接查询中,通过`ROWNUM`过滤结果可以减少不必要的数据处理。 五、ROWID应用示例 `...
- 为了确保`ROWNUM`的值与`ORDER BY`的结果一致,应先进行排序,再计算`ROWNUM`。 - **示例**: ```sql SELECT * FROM (SELECT ROWNUM NO, ID, NAME FROM (SELECT * FROM STUDENT ORDER BY NAME)) WHERE NO ; `...
如果您在查询中使用了`ORDER BY`子句,那么`ROWNUM`将按照排序后的结果进行编号。例如: ```sql SELECT ROWNUM, ID, NAME FROM STUDENT ORDER BY NAME; ``` 这条语句将根据`NAME`字段对`STUDENT`表中的数据进行排序...
### 在Oracle中灵活使用Rownum和RowId 在Oracle数据库中,`ROWNUM` 和 `ROWID` 是两个非常重要的概念,它们可以帮助我们在查询数据时实现更灵活的数据管理。本文将详细介绍这两个概念的区别及其使用方法,并通过...
SELECT ROWNUM, ID, NAME FROM STUDENT ORDER BY NAME; ``` 可以看出,ROWNUM并不是按照NAME列来生成的序号。系统是按照记录插入时的顺序给记录排的号,ROWID也是顺序分配的。为了解决这个问题,必须使用子查询。 ...
ROWNUM 是 Oracle 中的一种伪列,它可以根据返回记录生成一个序列化的数字。利用 ROWNUM,我们可以生产一些原先难以实现的结果输出,但是因为它是伪列的特殊性,在使用时需要注意一些事项,以免掉入“陷阱”。 特殊...
这意味着如果你在查询中使用了ORDER BY语句,但没有将ROWNUM放在子查询中,ROWNUM的顺序将不会按照预期的排序来生成。例如,`SELECT ROWNUM, id, name FROM student ORDER BY name`将返回ROWNUM按照数据本身存储的...
4. 如果表中的主键是按照升序插入的,且查询中没有`GROUP BY`和`ORDER BY`子句,`ROWNUM`的顺序可能与主键的顺序一致。但这是偶然的,不是`ROWNUM`的固有特性。 5. 在子查询中使用`ROWNUM`并将其传递到外部查询中时...
SELECT ROWNUM, id, name FROM student ORDER BY name; ``` 可以看出,ROWNUM 并不是按照 name 列来生成的序号。系统是按照记录插入时的顺序给记录排的号,ROWID 也是顺序分配的。为了解决这个问题,必须使用子查询...
需要注意的是,`ROWNUM`的筛选是在数据读取过程中进行的,而非对整个数据集进行排序后筛选,所以如果你没有指定`ORDER BY`子句,返回的结果顺序可能是不确定的。 在进行分页查询时,`ROWNUM`结合`ROWCOUNT`或者`...
需要注意的是,`ROWNUM`是在查询执行过程中动态生成的,并且在`ORDER BY`子句之前被计算。这意味着,如果不配合`ORDER BY`,`ROWNUM`的值可能不是预期的顺序。 **ROWID与ROWNUM的区别** - `ROWID`是物理地址,而`...
2. **ORDER BY与ROWNUM的交互**:如果需要先排序再限制结果数量,最好使用子查询的方法,确保排序后的数据被正确计数。 3. **性能考虑**:在处理大量数据时,应考虑使用其他方法如窗口函数(如RANK()、ROW_NUMBER()...
这段代码通过子查询先选出前20条记录,再从中筛选出第11到20条记录作为结果返回。 2. **优化后的分页查询**:考虑到性能问题,我们可以通过添加额外的条件来优化上述查询。 ```sql SELECT t.id AS ID, o.name AS...
Oracle中常用的方法是结合`ORDER BY`和`ROWNUM`来实现。首先,对数据进行排序,然后通过`WHERE ROWNUM 来限制返回的行数。例如,要从`customer`表中按照`NAME`字段升序获取前三条记录,可以编写如下SQL: ```sql ...
总结一下,`ROWNUM`在Oracle中用于限制查询返回的行数,但它的行为并不直观,特别是在与`ORDER BY`一起使用时。理解`ROWNUM`的生成原理以及其与`ORDER BY`的交互对于优化SQL查询和获取预期结果至关重要。在实际的...
Oracle中通常使用`ROWNUM`和`ORDER BY`结合的方式实现`SELECT TOP N`的功能。首先对数据进行排序,然后通过`ROWNUM`限制返回的行数。例如,如果我们有一个名为`CUSTOMER`的表,想按`NAME`字段的字母顺序获取前三个...