茅侃侃
2019-08-26 09:34:32
查找第二大值的最簡單的SQL查詢是什么?查找特定列中第二大整數(shù)值的最簡單的SQL查詢是什么?列中可能存在重復(fù)值。
3 回答

拉莫斯之舞
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個贊
SELECT MAX( col ) FROM table WHERE col < ( SELECT MAX( col ) FROM table )

RISEBY
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個贊
我在這里看到了一些特定于SQL Server和一些MySQL特定的解決方案,因此您可能想要澄清所需的數(shù)據(jù)庫。雖然如果我不得不猜測我會說SQL Server,因?yàn)檫@在MySQL中是微不足道的。
我也看到一些不起作用的解決方案,因?yàn)樗鼈儧]有考慮到重復(fù)的可能性,所以要小心你接受哪些。最后,我看到一些會起作用但會對表進(jìn)行兩次完整掃描。您希望確保第二次掃描僅查看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現(xiàn)在支持更清晰(和標(biāo)準(zhǔn))的OFFSET / FETCH語法:
SELECT TOP 2 [column] FROM [Table] GROUP BY [column] ORDER BY [column] DESCOFFSET 1 ROWSFETCH NEXT 1 ROWS ONLY;

猛跑小豬
TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個贊
首先制作一個沒有最大工資的虛擬表,然后從虛擬表中查詢最大值
SELECT max(salary) from (Select * FROM emp WHERE salary<> (SELECT MAX(salary) from emp)) temp
添加回答
舉報
0/150
提交
取消