题目描述
编写一个SQL查询,获取Employee
表中第二高的薪水(Salary)。
1 | +----+--------+ |
例如上述Employee
表,SQL查询应该返回200
作为第二高的薪水,如果不存在第二高的薪水,那么查询应该返回null
.
1 | +---------------------+ |
解法
先对Salary去重,防止相等的数据对后面查询造成干扰,根据Salary进行降序排序,然后使用limit关键字略过第一条信息,得到第二条信息则得到的即为第二高的薪水。
1 | SELECT DISTINCT Salary AS SecondHighestSalary |
- DESC(descend) 降序排列;ASC(ascend) 升序排列;
- DISTINCT 去重(两边不需要带括号👻)
- LIMIT Y OFFSET X 和 LIMIT X, Y 都表示掠过前X条数据,取第Y条数据(基1👀)
如果未查询到结果,需要返回null,使用哦个ifnull进行判断;
1 | SELECT IFNULL( |
IFNULL(X, Y) 如果X为null则返回Y,否则返回X。这里的AS要放到IFNULL语句之后!!!