在ORACLE 周刊 JAN/FEB 2007 中看到的一段代码,很有用.
SELECT * FROM
(
select ename,sal,ROW_NUMBER()
OVER(ORDER BY SAL DESC) RN
from emp
)
where RN<=3 ORDER BY SAL DESC
粗体部分是重点.
可以测试其效果.
而如果使用 ROWNUM 要想完成 order by sal desc 的功能,只能使用两个子查询才能达到此功能.
代码如下:
select * from
select rownum rn,ename,sal from
(select ename,sal
from emp
order by sal desc
)
)
where rn<=3