zoukankan      html  css  js  c++  java
  • Oracle分页

    例子:查询4-6的员工信息按照薪水降序排列

    oracle分页是三层子查询嵌套,可以根据以下步骤来分析(从内到外):

    1.第一层:根据查询条件查询出结果

    sql语句:

    SELECT emp.* FROM emp  ORDER BY sal desc 

    2.第二层:将第一层的sql语句的结果作为第二层表中的数据,加上RowNUM伪列条件

    sql语句:

    SELECT temp.* ,ROWNUM rn FROM (
          SELECT emp.* FROM emp ORDER BY sal desc 
     ) temp
      WHERE ROWNUM<=6

    为什么where条件是ROWNUM,而不是rn????

             因为sql语句是从from开始执行---到where条件,最后是select

             select相当于声明了ROWNUM rn,执行where时,找不到rn

    使用ROWNUM时,Rownum只能对=1<N进行筛选,如果>M不能筛选,如何规避。

    通过子查询构建临时表,让伪列Rownun称为临时表中的列,然后限定条件使用伪列的

    别名。

    3.第三层:(个人理解:第三层的条件是分页开始的页数,就是从第几条开始 pageIndex)

    将以上两个语句嵌套在第三层中,加上where条件,此时的rn别名是可以用的,>也是可以用的

    SQL语句:

    SELECT * FROM(
      SELECT temp.* ,ROWNUM rn FROM (
           SELECT emp.* FROM emp ORDER BY sal desc 
       )temp
       WHERE ROWNUM<=6
    )
    WHERE rn>=4

    分页就好了。。。。。。

    程序中分页的sql:

     select * from (
    select t.
    *, rownum rn from (
    select
    * from T_BASE_PROVINCE order by id asc
    ) t where rownum
    <= page*size
    ) where rn
    > (page-1)*size;
  • 相关阅读:
    最近写代码的风格,请帮忙分析下优缺点
    jQuery的回调管理机制(三)
    jQuery的回调管理机制(二)
    jQuery的回调管理机制
    iOS组件化
    iOS内存泄漏检测及分析
    iOS 路由
    iOS https抓包工作记录
    第二章 算法入门
    第一章 算法在计算中的作用
  • 原文地址:https://www.cnblogs.com/luoxionghenku/p/9928667.html
Copyright © 2011-2022 走看看