LeetCode数据库---176. 第二高的薪水
题目:
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 | +---------------------+ 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/second-highest-salary
知识点:
1. LIMIT、LIMIT OFFSET
LIMIT y 分句表示: 读取 y 条数据
LIMIT x, y 分句表示: 跳过 x 条数据,读取 y 条数据
LIMIT y OFFSET x 分句表示: 跳过 x 条数据,读取 y 条数据(LIMIT 后面只能有一个参数)
LIMIT n 等价于 LIMIT 0,n
例子:
SELECT * FROM table LIMIT 2,1; //跳过2条数据读取1条数据,即读取第3条数据
SELECT * FROM table LIMIT 2 OFFSET 1; //跳过1条数据读取2条数据,即读取2-3条数据
2. IFNULL(a, b)
如果value1不是空,结果返回a
如果value1是空,结果返回b
---
注意:
因为表里可能只有一条记录,所以需要判断一下为NULL的状态
salary可能有重复的,必须要DISTINCT去重
# 子查询的特质,子查询数据出虚表,嵌套查询虚表,如果查询不到会返回null select( select distinct salary from Employee order by salary DESC limit 1,1 ) as SecondHighestSalary
或者用IFNULL
select ifnull( (select distinct salary from Employee order by salary DESC limit 1,1),null ) as SecondHighestSalary;
IN A WORLD LIKE THIS
萬物之中,希望至美;至美之物,永不凋零
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix