题目


一、大概思路
查第二高的薪水,一般看这个题目就觉得ORDER BY 然后DESC从高高低就行了,然后LIMIT 1 OFFSET 1 就能查到第二高的数据。
二、代码实现
SELECT
(SELECT DISTINCT salary
FROM Employee
ORDER BY salary DESC
LIMIT 1 OFFSET 1) as 'SecondHighestSalary'
;
总结
一般order by desc 然后limit offset 就能查到第二高的数据。但是要注意如果有多个一样的薪水就会出问题,所以SELECT后面加一个DISTINCT来排除相同的数据。
同时如果只有一个薪水数据,或者所有的薪水数据都是相同的,那么所谓的“第二高的薪水”就不存在了,所以什么都查不出来(连null也没有),但是我们看到题目是要要求返回null的,所以我们在外部在嵌套一个查询,这样自查询虚表就会返回null了。
本文介绍了如何使用SQL ORDER BY和LIMIT OFFSET找到第二高薪水的解决方案,特别关注了处理重复薪资的 DISTINCT关键字,并讨论了特殊情况下的NULL返回策略。

1934

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



