一、176. 第二高的薪水
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。
| Id | Salary |
|---|---|
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。
| SecondHighestSalary |
|---|
| 200 |
二、解题思路
1.limit + offset
代码如下(示例):
select
distinct salary as SecondHighestSalary
from employee
limit 1 offset 1
题目要求:如果不存在第二高的薪水,那么查询应返回 null。那么上述SQL是不满足条件的,还需对null值进行处理
- 临时表
select
(select
distinct salary
from employee
limit 1 offset 1) as SecondHighestSalary
- 函数ifnull
select
IFNULL(
(select
distinct salary
from employee
limit 1 offset 1),null) as SecondHighestSalary
2.通用写法
代码如下(示例):
select
max(salary)
from employee
where salary < (
select max(salary)
from employee)
总结
limit以及limit+offset用法
- limit y 分句表示: 读取 y 条数据
- limit x, y 分句表示: 跳过 x 条数据,读取 y 条数据
- limit y offset x 分句表示: 跳过 x 条数据,读取 y 条数据
博客围绕SQL查询 Employee 表中第二高的薪水展开,介绍了两种解题思路,一是使用 limit + offset 并处理 null 值,二是通用写法。还总结了 limit 及 limit+offset 的用法,如 limit y 读 y 条数据等。
736

被折叠的 条评论
为什么被折叠?



