编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。
表结构如下:
Id | Saraly |
---|---|
1 | 100 |
2 | 200 |
3 | 300 |
4 | 400 |
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。
SecondHighestSalary | |
---|---|
200 |
解答:
- 方法一:
从比最高工资中低的里面选择一个最高的即为第二高工资
1 | select max(Salary) as SecondHighestSalary from Employee where Salary < (select max(Salary) from Employee); |
-方法二:
先根据工资降序排列,再使用limit函数,取第二条数据
1 | select IFNULL ((select distinct Salary from Employee order by Salary desc limit 1,1),null) as SecondHighestSalary; |