2010.07.15(2)——— oracle的rownum及分页
2010.07.15(2)——— oracle的rownum及分页
参考:http://www.examw.com/Oracle/jishu/106123/
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀。
举例说明:
例如表:student(学生)表,表结构为:
sql 代码 ID char(6) --学号 name VARCHAR2(10) --姓名 create table student (ID char(6), name VARCHAR2(100)); insert into sale values('200001',‘张一’); insert into sale values('200002',‘王二’); insert into sale values('200003',‘李三’); insert into sale values('200004',‘赵四’); commit;sql 代码 SQL> select rownum,id,name from student where rownum=1;(可以用在限制返回记录条数的地方,保证不出错,如:隐式游标) SQL> select rownum,id,name from student where rownum=1; ROWNUM ID NAME ---------- ------ --------------------------------------------------- 1 200001 张一 SQL> select rownum,id,name from student where rownum =2; ROWNUM ID NAME ---------- ------ ---------------------------------------------------
sql 代码 SQL> select rownum,id,name from student where rownum >2; ROWNUM ID NAME ---------- ------ ---------------------------------------------------
SQL>select * from(select rownum no ,id,name from student) where no>2; NO ID NAME ---------- ------ --------------------------------------------------- 3 200003 李三 4 200004 赵四
SQL> select * from(select rownum,id,name from student)where rownum>2; ROWNUM ID NAME ---------- ------ ---------------------------------------------------
sql 代码 SQL> select rownum,id,name from student where rownum <3; ROWNUM ID NAME ---------- ------ --------------------------------------------------- 1 200001 张一 2 200002 王二
sql 代码 SQL> select * from (select rownum no,id,name from student where rownum<=3 ) where no >=2; NO ID NAME ---------- ------ --------------------------------------------------- 2 200002 王二 3 200003 李三
sql 代码 SQL> select rownum ,id,name from student order by name; ROWNUM ID NAME ---------- ------ --------------------------------------------------- 3 200003 李三 2 200002 王二 1 200001 张一 4 200004 赵四
sql 代码 SQL> select rownum ,id,name from (select * from student order by name); ROWNUM ID NAME ---------- ------ --------------------------------------------------- 1 200003 李三 2 200002 王二 3 200001 张一 4 200004 赵四
sql 代码 select tname,tabtype from ( select tname,tabtype,rownum rn from tab where rownum <= 150 ) where rn >= 100;
select tname,tabtype from (select tname,tabtype,rownum rn from(select * from tab order by tname)where rownum <=150) where rn>=100;
select * from (select rownum rn,tt.* from (select s.ID,s.GCBM GCBM,s.QYBM QYBM,to_char(s.TBSJ,'yyyy-MM-dd') TBSJ,s.DTBM DTBM,d.DTMC DTMC ,s.SGZT SGZT,s.SGJD SGJD,s.SGJDMS SGJDMS,s.BZ BZ,s.SBRID SBRID ,c.true_name SBR from GC_SB_SGQY s,gc_gcxx_dtxx d ,tlb_user c where s.GCBM = '1' and s.DTBM = d.DTBM and c.user_id = s.SBRID order by s.TBSJ desc,s.id desc) tt where rownum <=12 ) where rn >9