select * from (SELECT * FROM A ORDER BY A2) WHERE ROWNUM <=20 
MINUS 
SELECT * FROM (SELECT * FROM A ORDER BY A2) WHERE ROWNUM <= 10;

解决方案 »

  1.   

    select * from (select rownum id,a1,a2,a3 from(select * from a order by a2)where rownum<4)where id>2;
      

  2.   

    SELECT ROWNUM RN ,B.* FROM  (select * from A order by A1)B
    WHERE RN<=20
    MINUS
    SELECT ROWNUM RN ,B.* FROM  (select * from A order by A1)B
    WHERE RN<=10
      

  3.   

    不行的,FROM后面的SELECT语句是不能带有ORDER BY 子句的。
      

  4.   

    没有这种问题啊SQL> select bbb from a2 where bbb like '%0%' order by bbb;BBB
    ----------
    101
    103
    105
    107SQL>
      

  5.   

    oracle8i以下的版本子查询是不能用order by的,你的oracle是多少版的?
      

  6.   

    贴错了,这个from 后面的select语句就有order bySQL> select bbb from(select bbb from a2 where bbb like '%0%' order by bbb);BBB
    ----------
    101
    103
    105
    107
      

  7.   

    To: zhaoyongzhu(zhaoyongzhu) 
      8.0.5To: bzszp 
    查询是这样的:
    SQL> select * from (SELECT * FROM UNIT ORDER BY unitname) WHERE ROWNUM <=20 ;
    select * from (SELECT * FROM UNIT ORDER BY unitname) WHERE ROWNUM <=20
                                      *
    错误位于第1行:
    ORA-00907: 缺少右括号
      

  8.   

    看来是你的oracle不支持这种用法
      

  9.   

    没错,8.0.5版本的子查询中是不能用order by子句的给你个建议,如果你写的是pl/sql程序,那么在程序中用动态sql(实现方法用dbms_sql包)先创建一个临时表:
    create table testtemp as select * from a order by a2;
    然后再对临时表testtemp进行rownum操作:
    select * from testtemp where rownum<=20
    minum
    select * from testtemp where rownum<10;
    查询完后,在将临时表testtemp删掉。这样应该可以达到你的目的。
      

  10.   

    不支持就用group by 肯定支持,而且好象group by 也带有排序属性,我只是用举例法试的,不行的话,不要怪我,^_^
    就是把order by 换成group by
      

  11.   

    很同意snowy_howe(天下有雪) (  ) 信誉的观点,以前oracle8i以前的版本
    就决这个问题就是用的group by !后来由于oracle8i在子查询里面支持order by 了然后就用order by 了!