Leetcode SQL_#176_第二高的薪水
Contents
题目
解答
select distinct Salary as SecondHighestSalary
from Employee
order by Salary desc
limit 1 offset 1
知识点:
offset关键字,跳过排序当中的第一个,那么得到的就是第二大的数字
问题:
- 这里边几个关键字的顺序问题,比如as应该放在哪里?limit和offset有没有严格的先后顺序?
* as要放在字段名称之后,from之前,因为我是重命名了一个字段
* 实验证明,limit必须在前,offset在后,不然会报语法错误 - 答案存在的漏洞:可能表中不同的工资只有1种,用了offset 1就是有问题的。
使用临时表
第二行括号里的select查询出来的结果就是一个临时表
select
(select distinct Salary from Employee order by Salary desc limit 1 offset 1)
as SecondHighestSalary;
使用ifnull()函数
ifnull(A,B)
:判断A是否是null,如果是null会返回默认值B
select
ifnull((select distinct Salary from Employee order by Salary desc limit 1 offset 1),null)
as SecondHighestSalary;
注意:ifnull里边的第一项是一个select查询出来的临时表,需要加上括号