
编写一个 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; |