为了账号安全,请及时绑定邮箱和手机立即绑定

查找第二大值的最简单的SQL查询是什么?

查找第二大值的最简单的SQL查询是什么?

茅侃侃 2019-08-26 09:34:32
查找第二大值的最简单的SQL查询是什么?查找特定列中第二大整数值的最简单的SQL查询是什么?列中可能存在重复值。
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

SELECT MAX( col )
  FROM table
 WHERE col < ( SELECT MAX( col )
                 FROM table )


查看完整回答
反对 回复 2019-08-26
?
RISEBY

TA贡献1856条经验 获得超5个赞

我在这里看到了一些特定于SQL Server和一些MySQL特定的解决方案,因此您可能想要澄清所需的数据库。虽然如果我不得不猜测我会说SQL Server,因为这在MySQL中是微不足道的。

我也看到一些不起作用的解决方案,因为它们没有考虑到重复的可能性,所以要小心你接受哪些。最后,我看到一些会起作用但会对表进行两次完整扫描。您希望确保第二次扫描仅查看2个值。

SQL Server(2012年之前):

SELECT MIN([column]) AS [column]FROM (
    SELECT TOP 2 [column] 
    FROM [Table] 
    GROUP BY [column] 
    ORDER BY [column] DESC) a

MySQL的:

SELECT `column` FROM `table` GROUP BY `column` ORDER BY `column` DESC LIMIT 1,1

更新:

SQL Server 2012现在支持更清晰(和标准)的OFFSET / FETCH语法:

SELECT TOP 2 [column] FROM [Table] GROUP BY [column] ORDER BY [column] DESCOFFSET 1 ROWSFETCH NEXT 1 ROWS ONLY;


查看完整回答
反对 回复 2019-08-26
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

首先制作一个没有最大工资的虚拟表,然后从虚拟表中查询最大值

SELECT max(salary) from (Select * FROM emp WHERE salary<> (SELECT MAX(salary) from emp)) temp


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 1975 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信