获取第二高的薪水

  • 要想获取第二高,需要排序,使用 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

另一简便做法:
select max(salary) as secondhighestSalary
from employee
where salary < 
(select max(salary) as salary from employee)//注意点:需要加括号,不然报错
posted @   yinghualeihenmei  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示