select * from table where rownum<11 order by datetime

解决方案 »

  1.   

    to andy1995(拓狼)老兄这样不行的。select * from (select * from table order by datetime) where rownum<11;
      

  2.   

    select * from table where rownum<11 order by datetime
    这样不行,不用子查询,无论你加什么order条件都不能修改rownum,rownum将始终是你输入的顺序决定的,也就是你只能查出开始的10行,而不是最新的10行
    建立子查询可以理解成建立了一张临时表,就可以了
      

  3.   

    to zenxin0103(木头)   我用的是9i,测试通过。  如果8i不能通过,就用子查询,跟你的一样
      

  4.   

    ern,你还没说出你的方法呢,期待!
      

  5.   

    to andy1995(拓狼)
       以上的写法其实都是返回的前10行数据,但并不是最新的数据,ern兄说得对.rownum始终是按输入的顺序决定的.
      

  6.   

    对datatime作一个索引。
    然后,取前十个就可以了。
      

  7.   

    farseervip(夜静思) :不好意思,我没表达清楚,我的意思就是select * from (select * from table order by datetime) where rownum<11;  用木头的方法应该是可以的,括号中间相当于一个临时的表,插入顺序就是排序时候的顺序(当然只是我个人这么想,oracle怎么实现我不知道)
      

  8.   

    我问一下,如果里面没有datetime呢?
      

  9.   

    总结,oracle不能直接实现最新10个记录输出。
    解决办法为通过一个子查询先按某字段排序,然后顺序输出10个记录。未验证中