猿问

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

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

查找特定列中第二大整数值的最简单的SQL查询是什么?

列中可能存在重复值。


茅侃侃
浏览 1976回答 3
3回答

拉莫斯之舞

SELECT&nbsp;MAX(&nbsp;col&nbsp;) &nbsp;&nbsp;FROM&nbsp;table &nbsp;WHERE&nbsp;col&nbsp;<&nbsp;(&nbsp;SELECT&nbsp;MAX(&nbsp;col&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;table&nbsp;)

RISEBY

我在这里看到了一些特定于SQL Server和一些MySQL特定的解决方案,因此您可能想要澄清所需的数据库。虽然如果我不得不猜测我会说SQL Server,因为这在MySQL中是微不足道的。我也看到一些不起作用的解决方案,因为它们没有考虑到重复的可能性,所以要小心你接受哪些。最后,我看到一些会起作用但会对表进行两次完整扫描。您希望确保第二次扫描仅查看2个值。SQL Server(2012年之前):SELECT&nbsp;MIN([column])&nbsp;AS&nbsp;[column]FROM&nbsp;( &nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;TOP&nbsp;2&nbsp;[column]&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;[Table]&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;GROUP&nbsp;BY&nbsp;[column]&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;ORDER&nbsp;BY&nbsp;[column]&nbsp;DESC)&nbsp;aMySQL的:SELECT&nbsp;`column`&nbsp;FROM&nbsp;`table`&nbsp;GROUP&nbsp;BY&nbsp;`column`&nbsp;ORDER&nbsp;BY&nbsp;`column`&nbsp;DESC&nbsp;LIMIT&nbsp;1,1更新:SQL Server 2012现在支持更清晰(和标准)的OFFSET / FETCH语法:SELECT&nbsp;TOP&nbsp;2&nbsp;[column]&nbsp;FROM&nbsp;[Table]&nbsp;GROUP&nbsp;BY&nbsp;[column]&nbsp;ORDER&nbsp;BY&nbsp;[column]&nbsp;DESCOFFSET&nbsp;1&nbsp;ROWSFETCH&nbsp;NEXT&nbsp;1&nbsp;ROWS&nbsp;ONLY;

猛跑小猪

首先制作一个没有最大工资的虚拟表,然后从虚拟表中查询最大值SELECT&nbsp;max(salary)&nbsp;from&nbsp;(Select&nbsp;*&nbsp;FROM&nbsp;emp&nbsp;WHERE&nbsp;salary<>&nbsp;(SELECT&nbsp;MAX(salary)&nbsp;from&nbsp;emp))&nbsp;temp
随时随地看视频慕课网APP
我要回答