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;
     
     
     
             
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    总结很重要哦 方法得当,坚持会有奇迹哦
  • 相关阅读:
    Andrej Karpathy的char-rnn Python3版本
    【转载】各位设备爹 来说说不用效果器的牛逼乐队吧
    为什么原始人和小动物不需要艺术?
    子非我焉知我之怒?人与人的悲欢并不相通
    尼采喜欢跳舞?论“每一个不曾起舞的日子 都是对生命的辜负真的”的误译!
    Thinkpad已不是曾经的IBM Thinkpad,联想已不是曾经的联想
    简单二进制编码(SBE)
    挪威志愿消防员笑话
    挪威的概念消防车
    一些有意思的牛津辩题
  • 原文地址:https://www.cnblogs.com/sunyuhuan/p/7217475.html
Copyright © 2011-2022 走看看