思路:关于这种获取第几多的XXX问题,一般可以直接使用 limit 来进行求解。 这里需要注意的是:

  1. 需要进行去重,举个例子:可能会存在两个相同的最高工资,如果不进行去重,那么使用 limit 将取不到第二大的工资
  2. 去重的方式有两种,第一种是 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)