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