zoukankan      html  css  js  c++  java
  • mysql和oracle分页

    mysql分页

    关键字limit,limit m,n 其中m表示起始位置的下标,下标从0开始。n表示要显示的条数,比如要查询一个表的第2到5条数据。

    select * from emp limit 1,4;

    oracle分页

    关键字rownum, rownum表示返回数据的行号。使用它需谨慎,不能用rownum大于(大于1的数值)、大于等于(大于或等于1的数值)、=(大于或等于1的数值),否则无结果。

    select count(*) from gcfr_t_vch a where rownum>1;

    运行结果如下:

    实际上这个表里是有数据的,理论上应该是能查出来数据的。但是为什么没有出来呢?

    这是因为:

    1、ROWNUM是伪列,必须要要有返回结果后,每条返回记录就会对应产生一个ROWNUM数值;

    2、返回结果记录的ROWNUM是从1开始排序的,因此第一条始终是1;

     这样,当查询到第一条记录时,该记录的ROWNUM为1,但条件要求ROWNUM>1,因此不符合,继续查询下一条;因为前面没有符合要求的记录,因此下一条记录过来后,其ROWNUM还是为1,如此循环,就不会产生结果。

     备注:当使用“>、>=、=、between...and”这些条件时,从缓冲区或数据文件中得到的第一条记录的rownum为1,不符合sql语句的条件,会被删除,接着取下条

    上述查询可以通过子查询来替代:

     select count(*) from ( select guid,rownum r from gcfr_t_vch t ) tt where tt.r >1

    常见使用:
          --rownum关键字:oracle对外提供的自动给查询结果编号的关键字,与每行的数据没有关系。
            --注意:rownum关键字只能做< <=的判断不能进行> >=的判断
          select rownum ,e.* from emp e;
          --查询员工信息的前5条数据 第一页数据
          select rownum r,e.* from emp e where rownum <=5;
          select * from (select rownum r,e.* from emp e where rownum <=5) t where r>0;
          --查询员工信息的6-10条数据 第二页数据
          select rownum r,e.* from emp e where rownum <=10;
          select rownum,t.* from (select rownum r,e.* from emp e where rownum <=10) t where r>5;
          --查询员工信息的11-15条数据 第三页数据
          select rownum r,e. * from emp e where rownum<=15;
          select * from (select rownum r,e. * from emp e where rownum<=15) t where r>10;
          --分页规律总结:每页显示m条数据,查询第n页数据
          select * from (select rownum r,e. * from 要分页的表 e where rownum<=m*n) t where r>m*n-m ;
                 --要分页的表既可以是真实的表,也可以是一个查询语句
          --分页查询员工信息按照工资排序
          select * from (select rownum r,t.* from (select * from emp  order by sal) t where rownum<=10 ) where r>5

       

    原文出处:

    oracle和mysql分页, 土豆Z120553, https://www.cnblogs.com/hkdpp/p/8327857.html

    oracle的分页查询, 愚蠢的程序员, https://www.cnblogs.com/wuxu/p/11198764.html

    Oracle中的rownum不能使用大于>的问题, 我不会游泳, https://www.cnblogs.com/antis/p/6740777.html

  • 相关阅读:
    UVa 116 单向TSP(多段图最短路)
    POJ 1328 Radar Installation(贪心)
    POJ 1260 Pearls
    POJ 1836 Alignment
    POJ 3267 The Cow Lexicon
    UVa 1620 懒惰的苏珊(逆序数)
    POJ 1018 Communication System(DP)
    UVa 1347 旅行
    UVa 437 巴比伦塔
    UVa 1025 城市里的间谍
  • 原文地址:https://www.cnblogs.com/ryelqy/p/11983063.html
Copyright © 2011-2022 走看看