当然不行,因为ROWNUM是得到结果(包括排序)以后才得到的,也就是先后顺序的问题

解决方案 »

  1.   

    没有问题
    09:37:51 SQL> select * from tb_1 order by 1 desc;         A B
    ---------- ----------
             4 8
             3 t
             2 c
             1 a
             1 g
             0 9已选择6行。已用时间:  00: 00: 00.31
    09:38:31 SQL> select * from (
    09:38:33   2  select t.*,rownum rnum from (
    09:38:33   3  select * from tb_1 order by 1 desc ) t
    09:38:33   4  ) where rnum between 3 and 6;         A B                RNUM
    ---------- ---------- ----------
             2 c                   3
             1 a                   4
             1 g                   5
             0 9                   6已用时间:  00: 00: 00.16
    09:38:36 SQL> 
      

  2.   

    楼上的老大:可是那里面的子查询已得到正确的排序结果了啊,一用了rownum排序就错了,但是若没有union关键字,用到rownum时排序就是正确的。
      

  3.   

    我已经解决了,语句如下:
    FROM (SELECT TMP. *, ROWNUM NUM
              FROM ( select * from (select f1,f2,f3 from f union select a1,a2,a3 from a ... ) order by 1 desc)TMP)
     WHERE NUM BETWEEN 1 AND 50
      

  4.   

    用union会自动排序。
    union all不会。
      

  5.   

    bzszp(www.bzszp.533.net) :
        SQL> select * from tb_1 order by 1 desc
    中order by 1是什么意思?by 2呢?
      

  6.   

    order by 1是指按第一个字段进行排序.