在问题中提供了一个empoyee表,有字段id和salary,需要将salary字段中取出第二高的值,如果没有第二高则返回null,输出字段名为SecondHighestSalary,使用mysql语法编写
首先我们分析这个表只有单纯的一个字段,查询后加一个as,倒序排列该表,然后limit第二条即可,所以sql语句如下
select salary as SecondHighestSalary from Employee order by salary desc limit 1,1
运行测试成功,但是当数据不足三条时报错,输入信息如下
所以需要修正没有时显示null,因为单条sql返回查不出来时只能返回空,所以需要将该查询套入一个子查询中,用ifnull方法判断为空时显示null,该方法判断不为空显示第一个值,为空显示第二个值,所以sql如下
select ifnull(
(
select salary as SecondHighestSalary
from Employee group by salary order by salary desc limit 1,1
),
null
) as SecondHighestSalary
测试用例全部通过,方法可行
下一篇: 没有了