题目描述 Employee 表:
+-------------+------+ | Column Name | Type | +-------------+------+ | id | int | | salary | int | +-------------+------+ id 是这个表的主键。 表的每一行包含员工的工资信息。 编写一个 SQL 查询,获取并返回 Employee 表中第二高的薪水 。如果不存在第二高的薪水,查询应该返回 null 。
查询结果如下例所示。
示例 1:输入: Employee 表: +----+--------+ | id | salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+ 输出: +---------------------+ | SecondHighestSalary | +---------------------+ | 200 | +---------------------+
导入数据
-- 176. 第二高的薪水
DROP TABLE IF EXISTS employee;
Create table If Not Exists Employee (id int, salary int);
Truncate table Employee;
insert into Employee (id, salary) values ('1', '100');
insert into Employee (id, salary) values ('2', '200');
insert into Employee (id, salary) values ('3', '300');
答案:
SELECT IFNULL((
SELECT DISTINCT salary
FROM employee
ORDER BY salary DESC
LIMIT 1,1), NULL)
AS SecondHighestSalary;
知识点补充
IFNULL
函数它接受两个参数,如果不是NULL
,则返回第一个参数。 否则,IFNULL
函数返回第二个参
示例1:
SELECT IFNULL(1,0); -- returns 1
示例2:
SELECT IFNULL('',1); -- returns ''
示例3:
SELECT IFNULL(NULL,'IFNULL function'); -- returns IFNULL function
小结
上面三个示例运行思路
IFNULL(1,0)
返回1
,因为1
不为NULL
。IFNULL('',1)
返回''
,因为''
字符串不为NULL
。IFNULL(NULL,'IFNULL function')
返回IFNULL
函数字符串,因为第一个参数为NULL
。
我们来看一下使用IFNULL
函数的实例。- 此外需注意
应避免在WHERE子句中使用
IFNULL
函数,因为它会降低查询的性能。如果要检查值是否为NULL
,则可以在WHERE
子句中使用IS NULL
或者IS NOT NULL
。