为什么oracle的rm是固定的呢,我order by之后rm没有改变,请大家帮帮忙,我该怎么样排序后得到第一条语句呢select * from (select rownum rm,t.* from play t order by time desc)  where rm>0 and rm<=1

解决方案 »

  1.   

    个人认为你的sql是正确的,你可以换不同的数据测试下
      

  2.   

    select   *   from   (select  t.*   from   play   t   order   by   time   desc) 
    where rownum<2  
    是你想要的么?
      

  3.   

    ORACLE中的ROWNUM不能使用BETWEEN ....AND....之类的条件来限制.楼主的WHERE条件违反了ORACLE SQL语句对ROWNUM的限制.2楼的SQL语句可以实现楼主的要求
      

  4.   

    rownum 肯定不是固定的了,
    我记得好像rownum 最小是从1开始的,
    我个人觉得2楼的语句好,你试试
      

  5.   

    比如我有以下数据id  time
    1,2007-10-12
    2,2007-10-13
    3,2007-10-14我想取日期最大的记录,
      

  6.   

    select * from play  where rownum<2 order by time desc
      

  7.   

    select * from (select time ,rownum as rm from play order by  time  desc) where rm = 1
      

  8.   

    经测试,以上的sql都是正确的