假设我有一个表为id,user_name,salary的雇员。我该如何选择Oracle中薪水第二高的记录?
我用谷歌搜索,找到了这个解决方案,对吗?
select sal from (select rownum n,a.* from ( select distinct sal from emp order by sal desc) a) where n = 2;
已经建议RANK和DENSE_RANK-根据您的要求,您还可以考虑ROW_NUMBER():
select * from ( select e.*, row_number() over (order by sal desc) rn from emp e ) where rn = 2;
RANK(),DENSE_RANK()和ROW_NUMBER()之间的差异归结为:
因此,如果您只想要一名员工(即使有几名员工的薪水排名第二),我建议您选择ROW_NUMBER()。