题目:
Employee 表:
+-------------+------+
| Column Name | Type |
+-------------+------+
| id | int |
| salary | int |
+-------------+------+
id 是这个表的主键。
表的每一行包含员工的工资信息。
编写一个 SQL 查询,获取并返回 Employee 表中第二高的薪水 。如果不存在第二高的薪水,查询应该返回 null 。
查询结果如下例所示。
示例 1:
输入:
Employee 表:
+----+--------+
| id | salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
输出:
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+
示例 2:
输入:
Employee 表:
+----+--------+
| id | salary |
+----+--------+
| 1 | 100 |
+----+--------+
输出:
+---------------------+
| SecondHighestSalary |
+---------------------+
| null |
+---------------------+
题解:
1.如果没有第二高的会返回空值,子查询,即外面加个select可以返回null
2.limit返回select记录数,一个参数就是返回几条记录;二个参数:指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目
# Write your MySQL query statement below
SELECT (
SELECT
DISTINCT salary
FROM
Employee
ORDER BY
Salary DESC
LIMIT 1, 1
) as SecondHighestSalary;