zoukankan      html  css  js  c++  java
  • MySQL oracle 分页

    (1)MySql的Limit m,n语句

    Limit后的两个参数中,参数m是起始下标,它从0开始;参数n是返回的记录数。我们需要分页的话指定这两个值即可。

    比如:查询10行记录,起始行从3开始

    SELECT * FROM emp LIMIT 3, 10;

    (2)Oracle数据库的分页需要用到rownum

    rownum伪列

    rownum伪列是Oracle首先进行查询获取到结果集之后在加上去的一个伪列,这个伪列对符合条件的结果添加一个从1开始的序列号,先看一个例子:

    select rownum,e.* from emp e; 

     

    查询前10条记录,我们可以这么写;

    select rownum,e.* from emp e where rownum <=10; 

    于是根据rownum,这个时候我们产生了分页的一个想法,取6~10条记录:

    select rownum,e.* from emp e where rownum >5 and rownum <=10; 

    但是我们发现这行不通,那么怎么会出现这个情况呢?原因在于,当生成结果集时,rownum每次都是从1开始产生,但是我们的条件里rownum>5,导致这条记录被过滤,这样再次次产生的rownum都是1,再次过滤,以此一直持续下去。

    那么怎么实现分页呢?重要之处在于:

    子查询里固定表里面数据的记录编号,外层查询过滤子查询里面固定的记录编号就可以实现Oracle分页!

    select  *  from (select rownum rn,e.* from emp e where rownum <=10 ) e1 where rn>6;  

    如果我们要对emp表中的列sal进行排序,再分页,我们可以这样写。

    select *
    from (select rownum r,e1.*
    from (select * from emp order by sal) e1
    where rownum <=8
    )
    where r >=5;

     

     

  • 相关阅读:
    《互联网时代》第三集·能量
    《互联网时代》第二集·浪潮
    java 基础类库之 SysFun
    java 基础类库之 SQLFun
    java 基础类库之 FormatFun
    Java 之 JDBC
    WepE
    MySql学习笔记
    Oracle学习笔记——点滴汇总
    Linux学习笔记——基于鸟哥的Linux私房菜
  • 原文地址:https://www.cnblogs.com/sunTin/p/6783070.html
Copyright © 2011-2022 走看看