to andy1995(拓狼)老兄这样不行的。select * from (select * from table order by datetime) where rownum<11;
select * from table where rownum<11 order by datetime 这样不行,不用子查询,无论你加什么order条件都不能修改rownum,rownum将始终是你输入的顺序决定的,也就是你只能查出开始的10行,而不是最新的10行 建立子查询可以理解成建立了一张临时表,就可以了
to zenxin0103(木头) 我用的是9i,测试通过。 如果8i不能通过,就用子查询,跟你的一样
ern,你还没说出你的方法呢,期待!
to andy1995(拓狼) 以上的写法其实都是返回的前10行数据,但并不是最新的数据,ern兄说得对.rownum始终是按输入的顺序决定的.
对datatime作一个索引。 然后,取前十个就可以了。
farseervip(夜静思) :不好意思,我没表达清楚,我的意思就是select * from (select * from table order by datetime) where rownum<11; 用木头的方法应该是可以的,括号中间相当于一个临时的表,插入顺序就是排序时候的顺序(当然只是我个人这么想,oracle怎么实现我不知道)
这样不行,不用子查询,无论你加什么order条件都不能修改rownum,rownum将始终是你输入的顺序决定的,也就是你只能查出开始的10行,而不是最新的10行
建立子查询可以理解成建立了一张临时表,就可以了
以上的写法其实都是返回的前10行数据,但并不是最新的数据,ern兄说得对.rownum始终是按输入的顺序决定的.
然后,取前十个就可以了。
解决办法为通过一个子查询先按某字段排序,然后顺序输出10个记录。未验证中