zoukankan      html  css  js  c++  java
  • 分页查询

    rowmun是oracle数据库特有的内容,是一个隐含字段,为每一个查询结果集维护了一个自增的行号,行号以1开始,以1递增
    不同的数据库,分特的SQL不同
    mysql
               limit
    oracle
                三层嵌套select+rownum
    rownum都支持哪些操作,查询结果集必须从1开始<=,  <,  >0, >=1 , =1
    查询前5员工

    select 

             empno,ename,rownum 
    from 
           emp
    where
            rownum<=5;---
    select 
             empno,ename,rownum 
    from 
           emp
    where
            rownum>0;-----所有
    查询工资排名在前5名的员工
    第一步:按照工资降序
    select
                empno,ename,sal
    from
             emp
     
    order by
             sal desc;      
    第二步:将上面的结果作为一张临时表处理
      select
                empno,ename,sal
    from
            (select
                empno,ename,sal
    from
             emp
     
    order by
             sal desc)
     
    where
          rownum<=5;
    查询员工的工资在【3-9】的员工
    第一步.查询出工资排名在前9的员工:
      select
                empno,ename,sal
    from
            (select
                empno,ename,sal
    from
             emp
     
    order by
             sal desc)
     
    where
          rownum<=9;
    第二步.  select
                empno
    from
            (select
                empno,ename,sal
    from
             emp
     
    order by
             sal desc)
     
    where
          rownum<=3;
    第三部:
     
     
      select
                empno,ename,sal
    from
            (select
                empno,ename,sal
    from
             emp
     
    order by
             sal desc)
     
    where
          rownum<=9
    and empno not in(
      select
                empno,ename,sal
    from
            (select
                empno,ename,sal
    from
             emp
     
    order by
             sal desc)
     
    where
          rownum<=5;
    查询员工的工资在【3-9】的员工
    第一步.查询出工资排名在前9的员工:
       select
                empno,ename,sal
    from
            (selec empno,ename,sal  from  emp   order by sal desc)
     
     
    where
          rownum<=9
      and 
            empno  not in( select empno,ename,sal  from (select  empno,ename,sal   from emp  order by  sal desc)where  rownum<=3);
     
    ---------------------
      select
                empno,ename,sal
    from
            (selec empno,ename,sal  from  emp   order by sal desc)
     
     
    where
          rownum<=9
      and 
            empno  not in( select empno,ename,sal  from (select  empno,ename,sal   from emp  order by  sal desc)where  linenum<=3);
    通用的分页SQL
    每页显示3条记录
    第一页[1-3]  (0-3)
     
    第二页[4-6]  (3-6)
    第三页[7-9]  (6-9)
      select
              tt.*
    from
            (selec t.*,rownum  as  linenum   
             from  (业务SQL)t 
     
     
            where
                       rownum<=pageNo*pageSize)tt
    where  linenum>(pageNo-1)*pageSize;
     
     
     
             
     
     
     
     
     
     
     
     
    rowmun是oracle数据库特有的内容,是一个隐含字段,为每一个查询结果集维护了一个自增的行号,行号以1开始,以1递增
    不同的数据库,分特的SQL不同
    mysql
               limit
    oracle
                三层嵌套select+rownum
    rownum都支持哪些操作,查询结果集必须从1开始<=,  <,  >0, >=1 , =1
    查询前5员工
    select 
             empno,ename,rownum 
    from 
           emp
    where
            rownum<=5;---
    select 
             empno,ename,rownum 
    from 
           emp
    where
            rownum>0;-----所有
    查询工资排名在前5名的员工
    第一步:按照工资降序
    select
                empno,ename,sal
    from
             emp
     
    order by
             sal desc;      
    第二步:将上面的结果作为一张临时表处理
      select
                empno,ename,sal
    from
            (select
                empno,ename,sal
    from
             emp
     
    order by
             sal desc)
     
    where
          rownum<=5;
    查询员工的工资在【3-9】的员工
    第一步.查询出工资排名在前9的员工:
      select
                empno,ename,sal
    from
            (select
                empno,ename,sal
    from
             emp
     
    order by
             sal desc)
     
    where
          rownum<=9;
    第二步.  select
                empno
    from
            (select
                empno,ename,sal
    from
             emp
     
    order by
             sal desc)
     
    where
          rownum<=3;
    第三部:
     
     
      select
                empno,ename,sal
    from
            (select
                empno,ename,sal
    from
             emp
     
    order by
             sal desc)
     
    where
          rownum<=9
    and empno not in(
      select
                empno,ename,sal
    from
            (select
                empno,ename,sal
    from
             emp
     
    order by
             sal desc)
     
    where
          rownum<=5;
    查询员工的工资在【3-9】的员工
    第一步.查询出工资排名在前9的员工:
       select
                empno,ename,sal
    from
            (selec empno,ename,sal  from  emp   order by sal desc)
     
     
    where
          rownum<=9
      and 
            empno  not in( select empno,ename,sal  from (select  empno,ename,sal   from emp  order by  sal desc)where  rownum<=3);
     
    ---------------------
      select
                empno,ename,sal
    from
            (selec empno,ename,sal  from  emp   order by sal desc)
     
     
    where
          rownum<=9
      and 
            empno  not in( select empno,ename,sal  from (select  empno,ename,sal   from emp  order by  sal desc)where  linenum<=3);
    通用的分页SQL
    每页显示3条记录
    第一页[1-3]  (0-3)
     
    第二页[4-6]  (3-6)
    第三页[7-9]  (6-9)
      select
              tt.*
    from
            (selec t.*,rownum  as  linenum   
             from  (业务SQL)t 
     
     
            where
                       rownum<=pageNo*pageSize)tt
    where  linenum>(pageNo-1)*pageSize;
     
     
     
             
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    总结很重要哦 方法得当,坚持会有奇迹哦
  • 相关阅读:
    Java集合(15)--ConcurrentHashMap源码分析
    Java集合(14)--双枢轴快速排序(DualPivotQuicksort)
    Java集合(13)--LinkedHashMap源码分析
    Java集合(12)--TreeSet源码分析
    Java集合(11)--TreeMap源码分析
    Java集合(10)--HashSet源码分析
    Java集合(9)--Collection 和 Collections
    Java集合(8)--HashMap源码分析
    day33-4用java的jdbc查看数据库中表的内容
    day33-1-1用java的jdbc添加数据库中表的内容(手动输入内容)
  • 原文地址:https://www.cnblogs.com/sunyuhuan/p/7217475.html
Copyright © 2011-2022 走看看