精华内容
下载资源
问答
  • oracle分页查询sql

    2019-01-15 23:03:22
    oracle分页查询语句sql
  • oracle分页sql语句

    2016-07-14 21:15:12
    oracle分页与mysql的分页是不一样的,mysql的分页网上很好找,但oracle的难找一些。下面就直接上代码了,参照这个格式就可以了。 select distinct code,dates,status from (select t1.*,rownum rn from(select * ...

    oracle的分页与mysql的分页是不一样的,mysql的分页网上很好找,但oracle的难找一些。下面就直接上代码了,参照这个格式就可以了。

    select distinct code,dates,status from (select t1.*,rownum rn from(select * from YWS_PURCHASE)t1 where rownum<='${last}') where rn>='${start}'

    因为用的mybatis,所以'${last}'和'${start}'就是要传进去的值,看意思大家就应该能明白,开始和最后,这是要传进去的参数。然后有时会因为语句里面有<符号,所以要加一个CDATA。

    ![CDATA[select distinct code,dates,status from (select t1.*,rownum rn from(select * from YWS_PURCHASE)t1 where rownum<='${last}')]] where rn>='${start}'

    如果是关联查询,只需要改变最里面的括号里的内容就行了。


    展开全文
  • Oracle分页SQL语句

    2016-08-10 10:23:00
    Oracle分页SQL语句基本上是通用的,通用语句如下: 分页语句: select * from (select rownum r,a.* from qu_pilot_basic_info a where rownum<=20) where r>10; 说明: 该语句是用了两层嵌套查询,内层...

    Oracle分页的SQL语句基本上是通用的,通用语句如下:

    分页语句:

    select * from (select rownum r,a.* from qu_pilot_basic_info a where rownum<=20) where r>10;

    说明:

    该语句是用了两层嵌套查询,内层查询控制记录的最大值,外层查询控制记录的最小值。其中,分页用到最关键的是rownum(行号),rownum的下标是从1开始的。

    转载于:https://www.cnblogs.com/javayuan/p/5755702.html

    展开全文
  • ORACLE分页查询SQL语句(最有效的分页)

    万次阅读 多人点赞 2018-11-01 16:18:24
    三、分析 Oracle分页查询语句基本上可以按照本文给出的格式来进行套用。 分页查询格式: SELECT * FROM (SELECT a.*, ROWNUM rn FROM (SELECT * FROM table_name) a WHERE ROWNUM ) WHERE rn >= 21 其中最内层的...

    一、效率高的写法

    1.无ORDER BY排序的写法。(效率最高)
    (经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!)

    SELECT *
    
      FROM (SELECT ROWNUM AS rowno, t.*
    
              FROM emp t
    
             WHERE hire_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')
    
                                 AND TO_DATE ('20060731', 'yyyymmdd')
    
               AND ROWNUM <= 20) table_alias
    
     WHERE table_alias.rowno >= 10;
    

    2.有ORDER BY排序的写法。(效率较高)
    (经过测试,此方法随着查询范围的扩大,速度也会越来越慢哦!)

    SELECT *
    
      FROM (SELECT tt.*, ROWNUM AS rowno
    
              FROM (  SELECT t.*
    
                        FROM emp t
    
                       WHERE hire_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')
    
                                           AND TO_DATE ('20060731', 'yyyymmdd')
    
                    ORDER BY create_time DESC, emp_no) tt
    
             WHERE ROWNUM <= 20) table_alias
    
     WHERE table_alias.rowno >= 10;
    

    二、效率垃圾但又似乎很常用的分页写法

    3.无ORDER BY排序的写法。(建议使用方法1代替)
    (此方法随着查询数据量的扩张,速度会越来越慢哦!)

    SELECT *
    
      FROM (SELECT ROWNUM AS rowno, t.*
    
              FROM k_task t
    
             WHERE flight_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')
    
                                   AND TO_DATE ('20060731', 'yyyymmdd')) table_alias
    
     WHERE table_alias.rowno <= 20 AND table_alias.rowno >= 10;
    
    --TABLE_ALIAS.ROWNO  between 10 and 100;
    

    4.有ORDER BY排序的写法.(建议使用方法2代替)
    (此方法随着查询范围的扩大,速度会越来越慢哦!)

    SELECT *
    
      FROM (SELECT tt.*, ROWNUM AS rowno
    
              FROM (  SELECT *
    
                        FROM k_task t
    
                       WHERE flight_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')
    
                                             AND TO_DATE ('20060531', 'yyyymmdd')
    
                    ORDER BY fact_up_time, flight_no) tt) table_alias
    
     WHERE table_alias.rowno BETWEEN 10 AND 20;
    

    5.另类语法。(有ORDER BY写法)
    (语法风格与传统的SQL语法不同,不方便阅读与理解,为规范与统一标准,不推荐使用。)

    WITH partdata AS
    
         (
    
            SELECT ROWNUM AS rowno, tt.*
    
              FROM (  SELECT *
    
                        FROM k_task t
    
                       WHERE flight_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')
    
                                             AND TO_DATE ('20060531', 'yyyymmdd')
    
                    ORDER BY fact_up_time, flight_no) tt
    
             WHERE ROWNUM <= 20)
    
    SELECT *
    
      FROM partdata
    
     WHERE rowno >= 10;
    
     
    
    --6另类语法 。(无ORDER BY写法)
    
    WITH partdata AS
    
         (
    
            SELECT ROWNUM AS rowno, t.*
    
              FROM k_task t
    
             WHERE flight_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')
    
                                   AND TO_DATE ('20060531', 'yyyymmdd')
    
               AND ROWNUM <= 20)
    
    SELECT *
    
      FROM partdata
    
     WHERE rowno >= 10;
    

    三、分析

    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控制分页查询的每页的范围。

    上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在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最内层返回给中间层的是所有满足条件的数据,而中间层返回给最外层的也是所有数据。数据的过滤在最外层完成,显然这个效率要比第一个查询低得多。

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

    这里就不对包含排序的查询进行说明了,下一篇文章会通过例子来详细说明。

    下面简单讨论一下多表联合的情况。

    对于最常见的等值表连接查询,CBO一般可能会采用两种连接方式NESTED LOOP和HASH JOIN(MERGE JOIN效率比HASH JOIN效率低,一般CBO不会考虑)。在这里,由于使用了分页,因此指定了一个返回的最大记录数,NESTED LOOP在返回记录数超过最大值时可以马上停止并将结果返回给中间层,而HASH JOIN必须处理完所有结果集(MERGE JOIN也是)。那么在大部分的情况下,对于分页查询选择NESTED LOOP作为查询的连接方法具有较高的效率(分页查询的时候绝大部分的情况是查询前几页的数据,越靠后面的页数访问几率越小)。

    因此,如果不介意在系统中使用HINT的话,可以将分页的查询语句改写为:

    SELECT *
    
      FROM (SELECT a.*, ROWNUM rn
    
              FROM (SELECT *
    
                      FROM table_name) a
    
             WHERE ROWNUM <= 40)
    
     WHERE rn >= 21
    
    展开全文
  • Oracle分页查询sql语句

    千次阅读 2019-07-18 16:09:48
    Oracle中分页和MySql中的分页不同,MySql中的分页使用关键字limit即可,相对简单一点,Oracle中分页使用rownum ,相对复杂...sql语句如下: SELECT * FROM ( SELECT t.*, rownum rn FROM ( SELECT * FROM USE...

    Oracle中分页和MySql中的分页不同,MySql中的分页使用关键字limit即可,相对简单一点,Oracle中分页使用rownum ,相对复杂一点。

    sql语句如下:

    SELECT *
    FROM
        (
            SELECT t.*, rownum rn
            FROM
                (
                    SELECT * FROM USER;
                ) t
        )
    WHERE
        rn > (currentPage-1)*pageSize
    AND rn <= currentPage*pageSize;

    Oracle中rownum是虚拟列,是得出结果后,再进行计算的。所以,只能是小于的,无法大于,要使用的大于,就必须使用别名,如上代码中的rn就是使用别名的写法。

     

     

     

    展开全文
  • ORACLE分页SQL语句

    2014-07-23 17:17:38
    1.根据ROWID来分 select * from t_xiaoxi where rowid in(select rid from (select rownum rn,rid from(select rowid rid,cid from t_xiaoxi order by cid desc) where rownum9980) order by cid desc;...
  • oracle sql分页语句

    2019-03-22 01:49:01
    NULL 博文链接:https://yan578351314.iteye.com/blog/911307
  • 分页查询格式 SELECT * FROM ( SELECT A, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询 SELECT * FROM TABLE_NAME 表示不进行翻页的原始查询语句 ...
  • oracle数据里向外迁移大量数据,有多种方法。其中一种就是应用jdbc连接oracle,写代码向外分页提取。
  • ORACLE分页SQL语句

    2008-12-12 11:14:00
    1.根据ROWID来分--cid 是t_xiaoxi表中的一列 select * from t_xiaoxi where rowid in(select rid from (select rownum rn,rid from(select rowid rid,cid from t_xiaoxi order by cid desc) where rownum where ...
  • oraclesql语句的排序和分页

    千次阅读 2017-12-01 11:47:30
    oracle与mysql不一样,在使用select查询时,oracle查询在不加order by时,查询的数据是有随机性,
  • 如果我们是通过JDBC的方式访问数据库,那么就有必要根据数据库类型采取不同的SQL分页语句,对于MySql数据库,我们可以采用limit语句进行分页,对于Oracle数据库,我们可以采用rownum的方式进行分页. (1)MySql的Limit m,n...
  • oracle 分页 很棒的实现方法,大家可以分析下。
  • 说说oracle分页sql语句,分排序和不排序两种。   当结果集不需要进行排序时,每页显示条数为:rowPerPage,当前页数为:currentPage。   1、 相对来说,这种查询速度会快一些,因为当currentPage...
  • Oracle分页查询语句

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

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

    千次阅读 2009-03-12 09:52:00
    使用sql,和oracle数据库进行分页可以有... (在系统中主要是直接写Sql语句来做) a) 按所需的排序方式排好序 b) 创建临时表 c) 从数据库里取出第0条 到 第1010条的数据 d) 把这些数据放入临时表中 e) 把临时表再按与 a)
  • 简单oracle分页sql语句

    千次阅读 2012-07-25 14:17:48
    环境选择在oracle scott用户下的emp表 根据rownum分页: 1. rownum 分页 SELECT * FROM emp;  2. 显示rownum[oracle分配的] SELECT e.*, ROWNUM rn FROM (SELECT * FROM emp) e; rn相当于Oracle分配的行的ID号 ...
  • msql和oracle分页查询语句笔记
  • oracle分页sql语句

    2011-11-27 19:13:39
    讲解oracle数据库操作数据表的分页过程,简单明了,可以直接套用,希望对大家学习oracle会有帮助
  • 一、SqlServe下载 分页语句 String sql = select top +pageRecord + * from addressbook where id not in (select top +(currentPage-)*pageRecord + id from t_user); // (currentPage-)*pageRecord : 是指从第几...
  • * Sql优化 - Oracle数据库 sql优化 - Oracle数据库 Sql优化目的 Sql优化原则 绑定变量 where ...最大的数据吞吐量 更快的相应时间 在有限资源内执行更多任务 使用绑定变量共享sql语句 Sql语句执行过程 1语法检查(synta

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,516
精华内容 16,606
关键字:

oracle分页sql语句