我在這里看到了一些特定于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;