zoukankan      html  css  js  c++  java
  • 在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
    在效率上推荐前一种
  • 相关阅读:
    【题解】 bzoj1207: [HNOI2004]打鼹鼠 (动态规划)
    【题解】 bzoj1088: [SCOI2005]扫雷Mine (神奇的做法)
    【题解】 bzoj4472: [Jsoi2015]salesman (动态规划)
    【题解】 bzoj4033: [HAOI2015]树上染色* (动态规划)
    【题解】 [HNOI/AHOI2018]道路 (动态规划)
    炫酷的英文字体分享
    艾伦·麦席森·图灵
    历史上最知名的15位计算机科学家
    浏览器首页被改为2345之解决方法
    linux命令缩写及全称
  • 原文地址:https://www.cnblogs.com/wenjl520/p/1445779.html
Copyright © 2011-2022 走看看