zoukankan      html  css  js  c++  java
  • Oracle(00):rownum行号

    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
  • 相关阅读:
    Django Rest framework基础使用之Request/Response
    Django Rest framework基础使用之 serializer
    python基础(一)
    python实现本地图片上传到服务区
    开发中遇到的问题记录
    九、xadmin菜单分组管理
    leetcode-7-整数翻转
    leetcode-6-Z 字形变换
    leetcode-5-最长回文子串
    leetcode-3-无重复字符的最长子串
  • 原文地址:https://www.cnblogs.com/springsnow/p/9399262.html
Copyright © 2011-2022 走看看