1.176. 第二高的薪水
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。
±—±-------+
| Id | Salary |
±—±-------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
±—±-------+
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。
±--------------------+
| SecondHighestSalary |
±--------------------+
| 200 |
±--------------------+
两种答案:
1.IFNULL
SELECT
IFNULL(
(SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT 1 OFFSET 1),
NULL) AS SecondHighestSalary
OFFSET指定SELECT语句开始查询的数据偏移量。相当于每页显示几条数据。
select * from employee limit 1 offset 2;
IFNULL(expr1,expr2) : expr1是一个表达式,当expr1为null时 直接使用expr2的值。
select IFNULL((select id from employee where id = 4),null) as data;
通过内层循环来判断是否有数据,来决定是否要进行IFNULL函数判断 如果没有数据的话 直接返回Null。
SELECT
(SELECT DISTINCT
Salary
FROM
Employee
ORDER BY Salary DESC
LIMIT 1 OFFSET 1) AS SecondHighestSalary
通过内查询 查找出第二高的薪水。