1
問題:MySQL:獲得列中第二大數值最大值的最佳方法?沒有查詢限制
給定一個表people
與列age
(類型:整數),編寫一個查詢來搜索和返回的第二大時代。
我的解決辦法:
SELECT MAX(age) FROM people
WHERE age <> (SELECT MAX(age) FROM people);
和
SELECT age FROM people
ORDER BY age DESC LIMIT 1,1;
非常簡單的問題,但我不知道哪一個是更理想的,即,最大限度地減少SQL負載查詢。我不熟悉SQL設置中的算法複雜性,但我的猜測是第一個查詢在O(n^2)
中運行,因爲MySQL需要分別查找長度分別爲n-1
和n
的兩個查詢的最大值。這個分析是否正確?如果是這樣,我認爲我應該去找我的第二個解決方案。將不勝感激任何想法,謝謝!
在第一個查詢中不需要GROUP BY(如所寫)。 –
如果你有'INDEX(age)',第一個查詢是非常優化的;從性能的角度來看,第二個是糟糕的;第三個是馬馬虎虎。 –
@RickJames。 。 。在第一個查詢中需要「GROUP BY」。 OP似乎想要第二個不同的值,而不是第二行中的值(可能與最大值相同)。 –