leetcode 第176题:第二高的薪水
leetcode 数据库
第176题:第二高的薪水
第一种:去掉最大的薪水,选取第二大的薪水
select max(salary) as SecondHighestSalary
from Employee
where salary < (select max(salary) from Employee);
第二种:嵌套查询+去除null+去重
- 要想获取第二高,需要排序,使用 order by(默认是升序 asc,即从小到大),若想降序则使用关键字 desc
- 去重,如果有多个相同的数据,使用关键字 distinct 去重
- 判断临界输出,如果不存在第二高的薪水,查询应返回 null,使用 ifNull(查询,null)方法
- 起别名,使用关键字 as ...
- 因为去了重,又按顺序排序,使用 limit()方法,查询第二大的数据,即第二高的薪水,即 limit(1,1) (因为默认从0开始,所以第一个1是查询第二大的数,第二个1是表示往后显示多少条数据,这里只需要一条)
- 为什么最外层没有加上 from employee?如果没有 ifNull() 函数,单纯只是嵌套SQL,加上 from employee 没有问题;但问题是 select ifNull 是搭配使用的,并不属于嵌套查询
select ifNull((
select distinct Salary
from Employee
order by Salary desc limit 1,1),null) as SecondHighestSalary
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix