题目地址https://leetcode.com/problems/second-highest-salary/
题解:这道题让我们找表中某列第二大的数,这道题有很多种解法。
第一种:先来看一种使用Limit和Offset两个关键字的解法,MySQL中Limit后面的数字限制了我们返回数据的个数,Offset是偏移量,那么如果我们想找第二高薪水,我们首先可以先对薪水进行降序排列,然后我们将Offset设为1,那么就是从第二个开始,也就是第二高薪水,然后我们将Limit设为1,就是只取出第二高薪水,如果将Limit设为2,那么就将第二高和第三高薪水都取出来:
SELECT Salary FROM Employee GROUP BY Salary
UNION ALL (SELECT NULL AS Salary)
ORDER BY Salary DESC LIMIT 1 OFFSET 1;
第二种:借助max()函数,逻辑是我们取出的不包含最大值的数字中的最大值,即为第二大值,max()函数当无结果是返回null,符合题目要求。
select max(Salary) as SecondHighestSalary
from Employee
where Salary < (select max(Salary) from Employee);