【Leetcode】Mysql查询第二高的薪水
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。
+—-+——–+ | Id | Salary | +—-+——–+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +—-+——–+ 例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。
+———————+ | SecondHighestSalary | +———————+ | 200 | +———————+
# 这里不描述union,not in等方法,sql语句优化很重要 # 方法一:118ms, 从小于最高工资中找最高的工资,找出来就是第二高的工资 # select max(Salary) as SecondHighestSalary from Employee where Salary<(select max(Salary) from Employee)
# 方法二: # 234ms,IFNULL,如果不为空返回第一个参数,为空返回null,降序后limit是关键,从第一条开始取,取一条,就是第二高工资 select IFNULL((select Distinct Salary from Employee order by Salary DESC limit 1,1),null) as SecondHighestSalary
上一篇:
IDEA上Java项目控制台中文乱码