Oracle数据库rownum使用总结.doc_第1页
Oracle数据库rownum使用总结.doc_第2页
Oracle数据库rownum使用总结.doc_第3页
Oracle数据库rownum使用总结.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle 数据库rownum使用总结 本人最近在使用oracle的rownum实现分页显示的时候,对rownum做了进一步的分析和研究。现归纳如下,希望能给大家带来收获。 对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀。 举例说明:例如表:student(学生)表,表结构为:ID char(6) -学号nameVARCHAR2(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;(1) rownum 对于等于某值的查询条件 如果希望找到学生表中第一条学生的信息,可以使用rownum=1作为条件。但是想找到学生表中第二条学生的信息,使用rownum=2结果查不到数据。因为rownum都是从1开始,但是1以上的自然数在rownum做等于判断是时认为都是false条件,所以无法查到rownum = n(n1的自然数)。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- - -(2)rownum对于大于某值的查询条件 如果想找到从第二行记录以后的记录,当使用rownum2是查不出记录的,原因是由于rownum是一个总是从1开始的伪列,Oracle 认为rownum n(n1的自然数)这种条件依旧不成立,所以查不到记录SQL select rownum,id,name from student where rownum 2;ROWNUM ID NAME- - - 那如何才能找到第二行以后的记录呀。可以使用以下的子查询方法来解决。注意子查询中的rownum必须要有别名,否则还是不会查出记录来,这是因为rownum不是某个表的列,如果不起别名的话,无法知道rownum是子查询的列还是主查询的列。SQLselect * from(select rownum no ,id,name from student) where no2; NO ID NAME- - - 3 200003 李三 4 200004 赵四SQL select * from(select rownum,id,name from student)where rownum2; ROWNUM ID NAME- - -(3)rownum对于小于某值的查询条件 如果想找到第三条记录以前的记录,当使用rownum3是能得到两条记录的。显然rownum对于rownum1的自然数)的条件认为是成立的,所以可以找到记录。SQL select rownum,id,name from student where rownum select * from (select rownum no,id,name from student where rownum=2; NO ID NAME- - - 2 200002 王二 3 200003 李三(4)rownum和排序 Oracle中的rownum的是在取数据的时候产生的序号,所以想对指定排序的数据去指定的rowmun行数据就必须注意了。SQL select rownum ,id,name from student order by name; ROWNUM ID NAME- - - 3 200003 李三 2 200002 王二 1 200001 张一 4 200004 赵四 可以看出,rownum并不是按照name列来生成的序号。系统是按照记录插入时的顺序给记录排的号,rowid也是顺序分配的。为了解决这个问题,必须使用子查询SQL select rownum ,id,name from (select * from student order by name)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论