思路:关于这种获取第几多的XXX问题,一般可以直接使用 limit
来进行求解。 这里需要注意的是:
- 需要进行去重,举个例子:可能会存在两个相同的最高工资,如果不进行去重,那么使用
limit
将取不到第二大的工资 - 去重的方式有两种,第一种是
distinct
第二种是group by salary
。使用group by
的方式效率更高
完整代码:
select emp_no, salary
from salaries
where to_date = '9999-01-01' and salary = (select salary from salaries group by salary order by salary desc limit 1,1)