前述
知识点学习:推荐阅读 sql语句中limit、offset的用法
题目描述
题目链接:176. 第二高的薪水
写法一
去掉最大的,再取最大的 ⇒ 第二大的。
select max(B.salary) as SecondHighestSalary
from Employee B
where B.salary != (select max(A.salary)from Employee A
)
写法二 :IFNULL() + LIMIT OFFSET
select ifnull((select salaryfrom Employeegroup by salaryorder by salary desc limit 1 offset 1
), null) as SecondHighestSalary
写法三
此写法学习官方题解中的。
注意:如果没有第 2 高的薪资,即表里可能只有一条记录,这个解答会被评测为 ‘Wrong Answer’ 。为了克服这个问题,我们可以将其作为临时表。
select(select distinct salaryfrom Employeeorder by salary desclimit 1 offset 1
) as SecondHighestSalary