写在前面
纯粹是个人leetcode数据库相关题目笔记,在CSDN上做备忘。所有题目有直接自己写的,有看了他人题解写的。若有雷同,那就是我参考了别人。
题目
解答
考点:
- 第二高是小于最高的第一高这一查询思路,对应解法一
- limit字句的用法,对应解法二
- ifnull的用法,对应解法二
解法一
限制条件为小于最高薪水的第一高薪水,即第二高
SELECT max(DISTINCT Salary) AS SecondHighestSalary
FROM Employee
WHERE Salary < (SELECT max(DISTINCT Salary) FROM Employee)
解法二
- limit y offset x 分句表示查询结果跳过 x 条数据,读取前 y 条数据
limit n 表示查询结果返回前n条数据
offset n 表示跳过x条语句,此处也可用逗号’,’ - ifnull(a,b)函数解释:如果不是空,结果返回a,如果是空,结果返回b
ps.相同思路可用于查找第N高的薪水
SELECT IFNULL (
(SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC LIMIT 1 OFFSET 1),
NULL) AS SecondHighestSalary