问题:
写一个 SQL 查询语句,获取 Employee表中第二高的Salary 。
列名 | 类型 |
---|---|
Id | int |
Salary | int |
Id | Salary |
---|---|
1 | 100 |
2 | 200 |
3 | 300 |
例如, 上面给出的 Employee 表,查询应该返回 200 作为第二高的Salary。如果没有第二高的Salary,那么查询应该返回 null。
SecondHighestSalary |
---|
200 |
分析:
这个需要一点一点的来写,其实也不难
①先写基本的查询语句,并且用别名 AS 来自定义查询出的列名。
②然后使用distinct来排除重复的元素
③用Order By 来排序,默认是从小到大,那么我们加个 Desc
④limit 1限制我们只需要一个值,offset 1让我们从第二个元素开始算
⑤用ifNull(expr1,expr2)函数,来使查询不到的变为null。这里注意一下别名需要换一下地方。
最后是这样的:
SELECT IFNULL(
(SELECT DISTINCT Salary
FROM Employee ORDER BY Salary desc LIMIT 1 OFFSET 1),NULL)
as SecondHighestSalary