思考
- 按照salary进行倒叙排序
- 用limit取排在第二个的即可
- limit y: 读取 y 条数据
- limit x, y: 跳过 x 条数据,读取 y 条数据
- limit y offset x: 跳过 x 条数据,读取 y 条数据
答案
select emp_no, salary from salaries order by salary DESC limit 1,1;
优化
上述答案只适用于每个员工的salary不同的情况,如果有几个员工的salary相同,那么上述答案还是只会输出一个员工,这显然是不合理的。答案优化:
select emp_no, salary from salaries where salary = ( select distinct salary from salaries order by salary DESC limit 1, 1);
注:理论上这里用 in 代替 = 应该也可以,但牛客会报错;另外,优化后的方案运行时间比原答案长