最开始的思路:
- 根据薪水由大到小排序
- 用
limit
限制显示记录条数为第二条记录即为第二高薪水
出现的问题:如果表的记录只有一条,那么第二高薪水应该输出 null,但是下面代码无法实现这个效果
select distinct e.Salary
from Employee e
order by e.Salary desc
limit 1, 1
解决方案:使用 ifnull()
函数,如果查询结果无记录,那么赋值为 null
select
ifnull((select distinct e.Salary
from Employee e
order by e.Salary desc
limit 1, 1), null) as SecondHighestSalary;