题目
一、大概思路
查第二高的薪水,一般看这个题目就觉得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了。