我想从今天的日期开始从表中返回7个事件,并按日期顺序排列:
SELECT ID
FROM table
where ID in (select ID from table
where DATEFIELD >= trunc(sysdate)
order by DATEFIELD ASC)
and rownum <= 7
Run Code Online (Sandbox Code Playgroud)
如果我删除'order by',它会返回ID并且查询有效,但它的顺序不正确.感谢任何帮助,因为我似乎无法弄清楚我做错了什么!
(编辑)为了澄清,我之前使用过这个,退回的订单真的出来了:
select ID
from TABLE
where DATEFIELD >= trunc(sysdate)
and rownum <= 7
order by DATEFIELD
Run Code Online (Sandbox Code Playgroud)
谢谢
a_h*_*ame 10
在处理ORDER BY 之前ROWNUM应用"函数" 的值.这就是为什么它不能像你使用它一样工作(请参阅手册以获得类似的解释)
当使用ROWNUM和ORDER BY 限制查询时,必须在内部选择中完成排序,并且必须在外部选择中应用限制:
select *
from (
select *
from table
where datefield >= trunc(sysdate)
order by datefield ASC
)
where rownum <= 7
Run Code Online (Sandbox Code Playgroud)