1、rownum是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。

如:将rownum限制为1,这样就只能查询出一条记录。

select rownum,id,name from student where rownum=1

2、rownum值的分配是在查询的谓词解析之后,任何排序和聚合之前进行的。ROWNUM值只有当被分配之后才会增长。rownum的排序是根据insert记录的顺序显示的。

select rownum,tmp.*
from (select c1,c2 from a order by a.c1) tmp
where rownum<=3;

3、子查询中的rownum必须保留别名,对于子查询,则rownum的顺序是根据子查询的查询顺序进行动态分配的,例如:

select rownum as t2_rn, t2.* from (select rownum as t1_rn , t1.* from emp t1 order by t1.sal) t2;

由上图可以看到T1_RN和T2_RN的区别。

t1中的rownum是根据emp这个基表的默认顺序分配的,而内层子循环是根据SAL字段进行排序,所以t2的rownum是根据内层子查询的记录顺序分配的。

4、分页查询

获取第语文成绩有潜力提升到高分阶段的批次记录,比如第6名到第10名的记录:

select MyGrade.*
from (select G.*, rownum rn
from (select g.* from grade g order by chinese) G
where rownum <= 10) MyGrade
where MyGrade.rn >= 6;

分页查询语句:

1:单表查询

select * from (select t.*,rownum r from table t where ROWNUM <= pageNumber*pageSize) 
         where r >(pageNumber)*pageSize

2:两张表联查

select * from (select rownum RN,XX.* from (select 表名.字段名, 表名.字段名, 表名.字段名... from TABLE1  t1, TABLE2   t2 where t1.字段=t2.字段) XX 
                                     where ROWNUM<=pageSize*pageNumber)
          where RN >(pageNumber-1)*pageSize

最新文章

  1. Egret白鹭H5小游戏开发入门(二)
  2. Hex string convert to Binary String and Vise-Versa(16进制和2进制字符串的相互转换)
  3. webpack +vue开发(2)
  4. Oracle表名、列名、约束名的长度限制
  5. ASP.NET MVC Error
  6. Linux高级变量
  7. Windows Phone8.1 SDK中的新控件
  8. HTML5 文件域+FileReader 分段读取文件并上传(七)-WebSocket
  9. Fragment与Activity
  10. Unity游戏程序员面试题及解答
  11. 结合Nginx以cgi方式安装php5.5.4
  12. 用Eclipse中的git提交代码流程
  13. java 中使用正则表达式操作字符串
  14. laravel5.8笔记十:Redis操作
  15. geoserver 图层样式
  16. Java SE之Java中堆内存和栈内存[转/摘]
  17. window批处理——bat文件的编写
  18. CodeForces - 950C Zebras 模拟变脑洞的天秀代码
  19. 强连通分量【k 算法、t 算法】
  20. openvpn 上外网

热门文章

  1. 网络I/O模型
  2. Span复习
  3. Properties类使用详解
  4. Python05之常用操作符
  5. GitHub的Fork是什么意思
  6. Luogu5280 [ZJOI2019] 线段树 【线段树】
  7. 扩展支持全选的CheckBox列。
  8. ReLU函数的缺陷
  9. JavaScript 基础(数据类型、函数、流程控制、对象)
  10. JTAG各类接口针脚定义、含义以及SWD接线方式