在一列中查找 N 个最大的元素

Finding N Largest elements in a column

我有一个 city table 由 IDNameCountryCode 和 [=13 等字段组成=].我想找到最大 Population 的前 N(比如 N = 5)个城市。

一种非常幼稚的方法是使用 MAX() 组函数找到人口最多的城市,然后通过此处提到的方法的变体找到其余城市。

What is the simplest SQL Query to find the second largest value?

有人知道实现目标的更好方法吗?

如果您只想要前 N 个城市,使用 order bylimit 将是一个更简单的方法:

SELECT   *
FROM     city
ORDER BY population DESC
LIMIT    5 -- or any other N
SELECT *
FROM cities AS c1
WHERE
(SELECT COUNT(*)
 FROM cities AS c2
 WHERE c2.population > c1.population)<5;

如果多个城市的人口相同,则此查询可能 return 超过五行。当存在绑定值时,您没有指定 "top 5" 的预期结果。