rownum

rownum是一个伪列,oracle数据库会对查找到的数据 从1 开始递增指定每行的rownum值,

当查询条件里有 rownum时(比如 where rownum>2),数据库会依次从数据集里的第一行数据到最后一行数据去匹配,如果第一行不满足where条件(比如指定where条件里有rownum>2时,第一行数据因为rownum=1而不满足,此时会抛弃第一行,第二行的数据因此变成了第一行,因此比较下去,因为下面的每行依次变为1,所以不可能有满足rownum>2的,此时查询不到数据)则数据集会将查找到的满足where条件里除rownum外其他条件的数据删掉。

where 条件1,条件2,条件3 查到的数据集

数据集 满足条件1 满足条件2 满足条件3 rownum
1       1
2       2
3       3
4       4

where 条件1,条件2,条件3 rownum<3 查到的数据集

数据集 满足条件1 满足条件2 满足条件3 rownum
1       1
2       2

where 条件1,条件2,条件3 rownum>2 查不到数据

数据集 满足条件1 满足条件2 满足条件3 rownum
1       1小于2 所以删除 下一行变为1
2       2=> rownum变成了1 所以也删除继续判断下面的
......

参见:http://www.cnblogs.com/mabaishui/archive/2009/10/20/1587165.html

时间: 2024-10-25 18:04:07

rownum的相关文章

Oracle伪列(ROWNUM)的使用

先看一个题:查询emp表的信息,显示前5行数据,这时候我们就需要使用伪列(rownum)的概念. rownum在数据表并不是一个真实的列,其实每一行应该都有一个行号,这个伪列就是用来记录这个行号的,这个列可以进行一些操作,比如取等于和小于操作,不能取大于操作. *****查询emp表的信息,显示前5行数据***** SELECT * FROM emp WHERE rownum <= 5 ; 如果我们要查询第5-10行数据,这时候该怎么办?就需要使用到子查询. SELECT * FROM ( SE

Rowid和Rownum的区别

Rowid和Rownum对于数据库开发人员来说基本很少用到,因为在企业数据库开发中大多都是进行数据批处理,但是对于其他数据库人员来说还是会用到的.rowid和rownum都是虚列,但含义完全不同.rowid是物理地址,用于定位Oracle中具体数据的物理存储位置,而rownum则是sql的输出结果排序.通俗的讲:rowid是相对不变的,rownum会变化,尤其是使用order by的时候. rowid 用于定位数据表中某条数据的位置,是唯一的.也不会改变 rownum 表示查询某条记录在整个结果

用运oracel中的伪列rownum分页

在实际应用中我们经常碰到这样的问题,比如一张表比较大,我们只要其中的查看其中的前几条数据,或者对分页处理数据.在这些情况下我们都需要用到rownum.因此我们要理解rownum的原理和使用方法. Oracle原理 Oracle的rownum经常使用的符号有(<.<=.!=),其他比如(>,>=,=,between...and)oracle也能编译成功,但是结果却查不出一条记录来, 假设某个表 student(sno,sname) 有 10 条记录 如果用 select rownum

oracle数据库中 rownum 和row_number()的区别和练习

明确对于rownum 来说 它是oracle 系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是二,以此类推,这个为字段可以用于限制查询的返回的总行数,因为rownum总是从1开始,但是1以上的自然数在rownum 做等于判断时都认为是false 条件,所以无法查到 rownum=n (n>1的自然数),所以查找第二行以后的记录可以用子查询方法来解决,给子查询中的rownum取别名;对于小于某个值的情况两种方法都差不多,但是对于某个不等于一的值或者求某个值到某个值之间的情况,用

rownum(转载)

对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=),并非说用>,>=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个 rownum 伪列的意义就不应该感到惊奇,同样是伪列,rownum 与 rowid 可有些不一样,下面以例子说明 假设某个表 t1(c1) 有 20 条记录 如果用 select

转:Oracle中的rownum不能使用大于&gt;的问题

一.对rownum的说明 关于Oracle 的 rownum 问题,很多资料都说不支持SQL语句中的“>.>=.=.between...and”运算符,只能用如下运算符号“<.<=.!=”, 并非说用“>.>=.=.between..and”时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来. 其实,只要理解好了这个 rownum 伪列的意义就不应该感到惊奇. rowid 与 rownum 虽都被称为伪列,但它们的存在方式是不一样的: r

浅谈oracle中rowid和rownum

[ 概要 ] 刚刚接触oracle的同学可能常常会被rowid和rownum这两个词弄混, 弄清楚这两个家伙对于我们写sql会有很大的帮助, 下面偶就抛砖引玉, 简单地谈谈他们之间的区别吧. [ 比较 ] rowid和rownum都是oracle中的伪列, 但他们还是存在本质区别: rowid: 是物理地址, 用于定位数据表中数据的位置, 它是唯一的且不会改变. rownum: 是根据查询的结果集给每行分配的一个逻辑编号, 查询结果不同, rownum自然不同. 对于同一条记录, 查询条件不同,

Oracle的rownum原理和使用

整理和学习了一下网上高手关于rownum的帖子: 参考资料:  http://tech.ddvip.com/2008-10/122490439383296.html 和 http://tenn.javaeye.com/blog/99339 对于Oracle的rownum问题,很多资料都说不支持>,>=,=,between……and,只能用以上符号(<.& lt;=.!=),并非说用>,>=,=,between……and 时会提示SQL语法错误,而是经常是查不出一条记录

rownum和rowid伪列

select row employee_id,last name,salary from employees; select row employee_id,last name,salary from employees where department_id=50; --查询牟彪中的前5条数据select rownum,employees.* from employees where rownum<=5; --查询牟彪中的第6到第10条数据(查不到)select rownum,employee

rownum与rowId

  一.RowNum Rownum是oracle生成结果集时得到的一个伪列, 按照读出行的顺序, 第一条rownum=1, 第二条=2. 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=),并非说用>,>=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个 rownum 伪列的意义就不应该感到惊奇,