法一:开窗函数
薪水第二多和第一多的员工数可能都不唯一,所以用dense_rank而不用rank或row_number。
select a.emp_no,a.salary
from (
select emp_no,salary,
dense_rank() over (order by salary desc) rk
from salaries
where to_date='9999-01-01'
) a
where a.rk=2;

法二:limit m,n
limit m,n等价于limit n offset m,表示跳过m个数据,取n个数据,即取第[m+1,m+n]个数据。
例如:limit 5,3等价于limit 3 offset 5,表示跳过5个数据,取3个数据,即取第6~8个数据。
select emp_no,salary from salaries
where salary = (
select salary from salaries
group by salary
order by salary desc
limit 1,1
);