编写一个 SQL 查询,获取并返回 Employee 表中第二高的薪水 。如果不存在第二高的薪水,查询应该返回 null 。
思路1: 像这种“第几”基本可以用limit()函数解决。将数据按薪水降序排序,取第二个值且只取一个值。返回null,可以用ifnull()函数。
脚本展示:
select ifnull((select Salary from Employee
order by Salary desc limit 1,1),null)
as SecondHighestSalary
IFNULL()函数解析
IFNUL(value1,value2)
如果value1不为NULL,则IFNULL函数返回value1; 否则返回value2的结果。
Limit()函数解析
Limit(value1,value2)
取第(value1+1)个数值开始的value2个数据
例如:limit(2,4) 检索从第3个数开始,往后显示4个数,0代表第一个数
desc 降序
asc 升序
思路2: 小于最大薪水的最大薪水值
select max(Salary) SecondHighestSalary
from employee
where
salary<(select max(salary) from employee)
需考虑数据量大、时效等问题
瑞思拜