識別MySQL 中的前N 最大值
在許多場景中,查詢特定列中具有最高值的前N行至關重要。但是,對於如何處理多行共享相同最大值的情況以及是包含具有相同值的所有行還是僅包含前 N 行,可能會出現混淆。
要解決此問題,您可以使用以下方法:
選項1:精確前N
使用LIMIT 子句,您可以擷取精確的前N 個按值降序排列前N 行,排除任何具有相同值的行:
SELECT * FROM t ORDER BY value DESC LIMIT N
選項2:包含前N 行
如果要包含所有具有相同最大值的行,即使有超過N 行具有該值,您可以使用以下方法:
將表與查找前N 個最小截止值的子查詢:
SELECT * FROM t JOIN ( SELECT MIN(value) AS cutoff FROM ( SELECT value FROM t ORDER BY value LIMIT N ) tlim ) tlim ON t.value >= tlim.cutoff
或者,您可以使用簡化版本:
SELECT * FROM t JOIN ( SELECT value FROM t ORDER BY value LIMIT N ) tlim ON t.value = tlim.value
概念替代(可選)
雖然以下查詢從概念上捕獲了所需的行為,但它可能不適用於MySQL:
SELECT * FROM t WHERE t.value >= ANY (SELECT value FROM t ORDER BY value LIMIT N)
以上是如何高效識別MySQL中前N個最大值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!