参见英文答案 >
How to get second largest or third largest entry from a table12个
> SELECTing top N rows without ROWNUM?5个
我在oracle中有一个员工表,名称,工资和其他详细信息.
> SELECTing top N rows without ROWNUM?5个
我在oracle中有一个员工表,名称,工资和其他详细信息.
我想获得第二高的薪水,但无法取得.
这一个工作正常
with e_salary as (select distinct salary from employee) select salary from e_salary order by salary desc
并给出输出:
450000 61000 60000 50000 40000 30000 20000 6000
select salary from ( with e_salary as (select distinct salary from employee) select salary from e_salary order by salary desc) where rownum = 2
但是当我用rownum< 2替换rownum = 2时,它会给出前两个记录的输出.请有人解释为什么rownum = 2不起作用
解决方法
这将有效:
select salary from ( select salary,rownum as rn from (select salary
from e_salary order by salary desc)) where rn = 2;
为什么它不起作用:
将ROWNUM分配给某行时,Oracle从1开始,仅在选择行时增加该值;也就是说,当满足WHERE子句中的所有条件时.由于我们的条件要求ROWNUM大于2,因此不会选择任何行,并且ROWNUM永远不会超过1.
希望你现在很清楚.