mysql 刷题-leetcode176-第二高的薪水

本文介绍了三种不同的SQL查询技巧,用于从Employee表中找出第二高的Salary值。方法包括子查询结合分页、在排除最大值后的表中找最大值,以及使用IFNULL函数。这些技巧对于处理实际数据库问题非常实用。
摘要由CSDN通过智能技术生成

编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。

+----+-------+
| Id | Salary|
+----+-------+
| 1  | 100   |
| 2  | 200   |
| 3  | 300   |
+----+-------+

例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。

+-----------------------------+
| SecondHighestSalary		  |
+-----------------------------+
| 200                         |
+-----------------------------+

解法一:(子查询 + 分页思想)

SELECT (SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT 1,1)
AS SecondHighestSalary

解法二:(在去掉最大值的表里选择最大值)

SELECT MAX(Salary) SecondHighestSalary
FROM Employee
WHERE Salary <> (SELECT MAX(Salary) FROM Employee)

解法三:(IFNULL 函数)

SELECT 
IFNULL((SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT 1,1), NULL)
AS SecondHighestSalary

小结:

  • SQL查询语句中的 limit 与 offset 的区别
    • limit y 分句表示: 读取 y 条数据
    • limit x, y 分句表示: 跳过 x 条数据,读取 y 条数据
    • limit y offset x 分句表示: 跳过 x 条数据,读取 y 条数据
    • limit n 等价于 limit 0,n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

年中初界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值