题目
求某一列第二大的值
- 如果没有第二大的值,返回NULL
方法1.使用MAX关键字
- 进行两次排序,第一次选出max后,再从剩下的进行排序选出第二大的
SELECT MAX(Salary) AS SecondHighestSalary FROM Employee
WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee);
方法2. 子查询和limit从句
- 降序(desc)排列不同(distinct)的值,利用limit和offset选出第二大的值
SELECT DISTINCT
Salary AS SecondHighestSalary
FROM
Employee
ORDER BY Salary DESC
LIMIT 1 OFFSET 1
- 上面的有问题,当只有一行记录时,会返回空,而不是NULL;
- 解法:利用temp table解决这一问题
SELECT
(SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1 OFFSET 1)
AS SecondHighestSalary
本文介绍了如何在MySQL中求某列的第二大数据。方法包括使用MAX关键字进行两次排序,以及通过子查询和LIMIT从句结合降序排列并处理只有一行记录的情况。在遇到只有一行记录时,提供了利用临时表解决返回NULL的问题。
491

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



