oracle中rownum的用法

rownum 返回查询的结果的列数,是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum 是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。
ROWNUM是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类推。如果你用>,>=,=,between...and这些条件,因为从缓冲区或数据文件中得到的第一条记录的rownum为1,则被删除,接着取下条,可是它的rownum还是1,又被删除,依次类推,便没有了数据。
选择表中的某一行记录:(理解:rownum是oracle系统顺序分配为从查询返回的行的编号)
select * from (select rownum a,t.* from testtab t) where a=2;
select * from (select rownum a,t.* from testtab t) where a=3;
select * from (select rownum a,t.* from testtab t) where a=4;
不能为:
select * from (select rownum,t.* from testtab t) where rownum=2;或
select * from testtab where rownum=2;
返回多行记录:
select * from testtab where rownum<=10;
返回某段记录:(如取记录表中4-10行)
select * from (select rownum no,testtab.* from testtab where rownum<=10) where no>=4;
返回有条件且经过排序的某段记录:
select rownum num1,tt.* from
(select rownum num,t.* from
(select EcodeInfo.* from EcodeInfo where a=1 order by ecode desc) t) tt
where num>19 and rownum<20>
以为oracle是先提取记录再排序的,而oracle的rownum是在提取记录就已经生成,它先于排序操作,所以必须使用子查询先排序。
不能为:
select * from tsettab where rownum>10;
返回最后一行记录:
select * from (select rownum a,t.* from testtab t) where a=(select count(*) from testtab);
返回最后N行记录:
select * from (select rownum a,t.* from testtab t) where a=(select count(*)-N from testtab);

----------------
select   *   from   adminrole   where   rownum<=4
  minus  
  select   *   from   adminrole   where   rownum<2>

select * from
  (select rownum row_id ,b.* from (select a.* from sorttable a order by sortid)b) 
where row_id between 5 and 9;

单表:  
  select   *   from   (select   Rownum   id,c.*   from   (select   *   from   case   t   order   by   case-id   desc)c)where   id>1   and   id   <=2   ;    
  这里的1和2就是你要一次查询的记录数据,你可以把这两个数值当做参数来传递从而达到分面的目的  
  多表:  
  select   *   from   (select   Rownum   id,c.*   from   (select   a.code,b.name   from   a,b   where   a.code=b.code)c)   where   id>3   and   id<4;  
  个人感觉这里关键是在你想要用这个rownum之前先进行一次查询把这个字段值查询出来当做你要查询的一个条件
文章出处:http://www.diybl.com/course/7_databases/oracle/oraclexl/2008126/97555.html
http://topic.csdn.net/t/20050610/16/4073840.html
http://www.cnblogs.com/chinhr/archive/2007/09/30/911685.html

你可能感兴趣的:(html,oracle,C++,c,C#)