前述
知识点学习:推荐阅读 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 salary
from Employee
group by salary
order by salary desc
limit 1 offset 1
), null) as SecondHighestSalary
写法三
此写法学习官方题解中的。
注意:如果没有第 2 高的薪资,即表里可能只有一条记录,这个解答会被评测为 ‘Wrong Answer’ 。为了克服这个问题,我们可以将其作为临时表。
select(
select distinct salary
from Employee
order by salary desc
limit 1 offset 1
) as SecondHighestSalary