在oracle表中怎么获得第5行到第7行的记录

简介:
  
         在oracle表中怎么获得第5行到第7行的记录
在oracle中表test,
记录如下:
A
---
1
2
3
4
5
6
7
8
 

请问怎么获得第5行到第7行的记录呢?
/************************************答案***********************************/
select * from can_jsk where rownum <= 7 minus select * from can_jsk where rownum <= 5
 
/***********执行结果**************/
  1* select * from emp where rownum <= 7 minus select * from emp where rownum <= 5
SQL> /
 
     EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
      7698 BLAKE      MANAGER         7839 01-5月 -81       2850                    30
      7782 CLARK      MANAGER         7839 09-6月 -81       2450                    10
  1* select * from emp where rownum!=10
SQL> /
 
     EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-12月-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-2月 -81       1600        300         30
      7521 WARD       SALESMAN        7698 22-2月 -81       1250        500         30
      7566 JONES      MANAGER         7839 02-4月 -81       2975                    20
      7654 MARTIN     SALESMAN        7698 28-9月 -81       1250       1400         30
      7698 BLAKE      MANAGER         7839 01-5月 -81       2850                    30
      7782 CLARK      MANAGER         7839 09-6月 -81       2450                    10
      7788 SCOTT      ANALYST         7566 19-4月 -87       3000                    20
      7839 KING       PRESIDENT            17-11月-81       5000                    10
 
已选择9行。
/*********错误***********/
SQL> select* from emp where rownum <=2
  2  minus
  3  select * from emp where rownum<=5
  4  ;
 
未选定行
 
注意:rownum只能用符号(<、<=、!=)。
            select * from tablename where rownum != 10;返回的是前9条记录。
            不能用:>,>=,=,Between...and。由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件
 
只能用
select *
from table_name
where rownum < N
minus
select *
from table_name
where rownum < M
 
就可以选中 M 与 N之间的。
 
 
 
rownum是伪列,代表已经查询到的记录的行序号。还未查到的记录是没有rownum的。
因此ROWNUM>=1 AND ROWNUM<=10是可以查到前10条记录但是不能证明
ROWNUM>=500 AND ROWNUM<=600可以查处500~600的501条记录。
ROWNUM>=1 AND ROWNUM<=10在逻辑上相当于ROWNUM<=10
正确的方法是:
select * from (select Z_YXJK_DMDH.*, rownum as rid from Z_YXJK_DMDH where rownum<=600) where rid > 500
或者
select * from Z_YXJK_DMDH where rownum<=600
minus
select * from Z_YXJK_DMDH where rownum<=500
在效率上推荐前一种
版权说明

  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
  作      者:温景良
  文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

posted @ 2009-04-28 23:49 温景良(Jason) Views( 2297) Comments( 0) Edit 收藏
 

公告

hidden hit counter
 
本文转自 我的程序人生博客园博客,原文链接: http://www.cnblogs.com/wenjl520/archive/2009/04/28/1445779.html,如需转载请自行联系原作者
相关文章
|
3月前
|
Oracle 关系型数据库 数据库
Oracle查询优化-限制返回行数
【1月更文挑战第1天】【1月更文挑战第2篇】Oracle数据库是常用的数据库之一尤其数据量较大时很友好。但当一个查询结果太大时,Oracle很容易将内存和 CPU 规模炸裂而导致异常,限制查询结果返回的行数是很有必要的。有的时候又不是进行分页查询的情况下,就需要灵活运用ROWNUM。
162 0
|
SQL Oracle 关系型数据库
[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)
原文:[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) [推荐]ORACLE PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下) ——通过知识共享树立个人品牌。
1240 0
|
SQL Oracle 关系型数据库
ORACLE中获得受影响记录行数
create table rzl(uuid varchar2(32)) ; declare     cot number ; begin         delete from rzl where 1=1;      cot := sql%rowcount;      dbms_output.put_line(sql%rowcount);        dbms_output.put_line(cot);  end ; 如果rzl表中的4条记录。
865 0
|
SQL Oracle 关系型数据库
oracle等待事件6——行高速缓存上的等待事件
1、row cache lock oracle将数据子典信息存于SGA内的行高速缓冲区(或dictionary cache),行高速缓冲区位于共享池内,可以通过如下命令进行确认: SQL> select pool,name,bytes from v$sga...
1143 0
|
SQL Oracle 关系型数据库
[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/6423532 [推荐]ORACLE PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下) ——通过知识共享树立个人品牌。
1075 0