從表格中選取最高的最大值
在資料庫管理中,可能需要從表格中擷取前 n 個最高值。為了實現這一目標,有幾種方法可用。考慮下表:
column1 column2 1 foo 2 foo 3 foo 4 foo 5 bar 6 bar 7 bar 8 bar
對於 n=2,我們希望得到以下結果:
3 4 7 8
使用 Group Max 進行近似
最初的方法是計算每個組的最大值:
SELECT max(column1) FROM table GROUP BY column2
但是,此方法僅提供每個組的最高值,而不是前 n 個值。
基於聯合的解決方案
對於n=2,可以使用以下基於聯合的查詢:
SELECT max(column1) m FROM table t GROUP BY column2 UNION SELECT max(column1) m FROM table t WHERE column1 NOT IN (SELECT max(column1) WHERE column2 = t.column2)
此查詢選擇頂部值,然後透過連線排除重複項第二個查詢,找出尚未選擇的下一個最高值。
排名模擬
對於任何 n 值,更通用的方法是模擬排名( ) 分區上的函數。一種方法是:
SELECT t.* FROM (SELECT grouper, (SELECT val FROM table li WHERE li.grouper = dlo.grouper ORDER BY li.grouper, li.val DESC LIMIT 2,1) AS mid FROM ( SELECT DISTINCT grouper FROM table ) dlo ) lo, table t WHERE t.grouper = lo.grouper AND t.val > lo.mid
此查詢按所需列對值進行分組,然後在指定限制內找到每個組的下一個最高值(在本例中,n= 2 ,1) 2).
遵循這些方法,您可以有效地從給定表中選擇前n 個最大值,確保消除重複值並傳回正確的記錄數。
以上是如何從資料庫表中檢索前 n 個最大值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!