精华内容
下载资源
问答
  • Oracle分页查询语句

    2013-12-31 11:20:17
    Oracle分页查询语句的学习和示例演练
  • oracle分页查询语句select * from ( select a.*, rownum rn from (select * from table_name) a where rownum <= 40 ) where rn >= 21java得到分页查询语句的方法/*** 得到分页查询的语句* @param queryString...

    oracle分页查询语句

    select * from ( select a.*, rownum rn from (select * from table_name) a where rownum <= 40 ) where rn >= 21

    java得到分页查询语句的方法

    /**

    * 得到分页查询的语句

    * @param queryString

    * @param pageIndex

    * @param pageSize

    * @return

    */

    public String getPageQl(String queryString, int pageIndex, int pageSize){

    //select * from ( select a.*, rownum rn from (select * from table_name) a where rownum <= 40 ) where rn >= 21

    String ql = "select * from ( select page_.*, rownum rn from ("+queryString+") page_ where rownum <= "+pageIndex*pageSize+" ) where rn > "+(pageIndex-1)*pageSize;

    //log.info(ql);

    return ql;

    }

    排序的时候,最好再加上按id排序,解决翻页数据重复的问题。

    展开全文
  • Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看。Oracle分页查询语句基本上可以按照本文给出的格式来进行套用。Oracle分分页查询格式:...

    Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看。

    Oracle分页查询语句基本上可以按照本文给出的格式来进行套用。

    Oracle分分页查询格式:

    SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21;

    其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。

    上面给出的这个Oracle分分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 40这句上。

    选择第21到40条记录存在两种方法,一种是上面例子中展示的在查询的第二层通过ROWNUM <= 40来控制最大值,在查询的最外层控制最小值。而另一种方式是去掉查询第二层的WHERE ROWNUM <= 40语句,在查询的最外层控制分页的最小值和最大值。查询语句如下:

    SELECT * FROM  (  SELECT A.*, ROWNUM RN  FROM (SELECT * FROM TABLE_NAME) A  )  WHERE RN BETWEEN 21 AND 40  ;

    对比这两种写法,绝大多数的情况下,第一个查询的效率比第二个高得多。

    这是由于CBO 优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询条件WHERE ROWNUM <= 40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了ROWNUM限制条件,就终止查询将结果返回了。

    而第二个查询语句,由于查询条件BETWEEN 21 AND 40是存在于查询的第三层,而Oracle无法将第三层的查询条件推到最内层(即使推到最内层也没有意义,因为最内层查询不知道RN代表什么)。因此,对 于第二个查询语句,Oracle最内层返回给中间层的是所有满足条件的数据,而中间层返回给最外层的也是所有数据。数据的过滤在最外层完成,显然这个效率 要比第一个查询低得多。

    上面分析的查询不仅仅是针对单表的简单查询,对于最内层查询是复杂的多表联合查询或最内层查询包含排序的情况一样有效。

    展开全文
  • oracle分页查询语句

    2017-05-05 13:21:41
    oracle分页查询语句SELECT logTime,userNo,labCode,primaryKey,operateType,isHaiEr,logDetail FROM(SELECT A.*, rownum r FROM(SELECT * FROM log) A WHERE rownum (start+length)+")B WHERE r >="+start;...

    oracle分页查询语句

    SELECT logTime,userNo,labCode,primaryKey,operateType,isHaiEr,logDetail FROM(SELECT A.*, rownum r FROM(SELECT * FROM log) A WHERE rownum < "+(start+length)+")B WHERE r >="+start;

    start为开始记录,length为长度,代表的含义为:查询从start开始,length条记录。

    mysql中有limit关键字,在oracle中并不支持limit,但oracle支持rownum,在分页查询时,可以借助rownum来实现。
    1、返回5-10行的数据
    select * from log t where Rownum <10  minus select * from log t where Rownum<5
    但注意不能这么写
    select * from log t where Rownum <10  and Rownum >5
    因为oracle并不认为这是正确的条件
    
    2.返回5-10行的数据,这种方式更常用在oracle的分页查询中
    SELECT * FROM
    
    (
    
    SELECT A.*, rownum r
    
    FROM
    
    (
    
    SELECT *
    
    FROM log
    
    ) A
    
    WHERE rownum <= 10
    
    ) B
    
    WHERE r >=5
    
    SELECT * FROM(SELECT A.*, rownum r FROM(SELECT * FROM log) A WHERE rownum <= 12)B WHERE r >=9
    展开全文
  • oracle分页查询语句select * from ( select a.*, rownum rn from (select * from table_name) a where rownum <= 40 ) where rn >= 21java得到分页查询语句的方法/*** 得到分页查询的语句* @param queryString...

    oracle分页查询语句

    select * from ( select a.*, rownum rn from (select * from table_name) a where rownum <= 40 ) where rn >= 21

    java得到分页查询语句的方法

    /**

    * 得到分页查询的语句

    * @param queryString

    * @param pageIndex

    * @param pageSize

    * @return

    */

    public String getPageQl(String queryString, int pageIndex, int pageSize){

    //select * from ( select a.*, rownum rn from (select * from table_name) a where rownum <= 40 ) where rn >= 21

    String ql = "select * from ( select page_.*, rownum rn from ("+queryString+") page_ where rownum <= "+pageIndex*pageSize+" ) where rn > "+(pageIndex-1)*pageSize;

    //log.info(ql);

    return ql;

    }

    排序的时候,最好再加上按id排序,解决翻页数据重复的问题。

    展开全文
  • 来源http://yangtingkun.itpub.net/post/468/100278Oracle分页查询语句基本上可以按照本文给出的格式来进行套用。分页查询格式:SELECT * FROM(SELECT A.*, ROWNUM RNFROM (SELECT * FROM TABLE_NAME) AWHERE ...
  • Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,Oracle分页查询语句基本上可以按本文给出的格式来进行套用。  Oracle分页查询格式:  以下是代码片段: SELECT * FROM ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,956
精华内容 782
关键字:

oracle分页查询语句