
思路
- distinct去重复,
- 排序
- 因为去了重,又按顺序排序,使用 limit()方法,查询第二大的数据,即第二高的薪水,即 limit(1,1) (因为默认从0开始,所以第一个1是查询第二大的数,第二个1是表示往后显示多少条数据,这里只需要一条)
- ifnull判断该列是否有值(判断是否存在数据,这个判断容易被忽略)
- 用as取别名
select
IFNULL((select distinct(e.Salary)
from Employee e
order by e.Salary desc
limit 1,1),null) as SecondHighestSalary
结果
