Mysql 在列中查找N个最大元素

Mysql 在列中查找N个最大元素,mysql,sql,database,select,top-n,Mysql,Sql,Database,Select,Top N,我有一个城市表,由ID、姓名、国家代码和人口等字段组成。我想找出人口最多的5个城市的Nsay N=5 一种非常简单的方法是使用最大组函数找到人口最多的城市,然后通过本文提到的方法的变体找到其余的城市 有人知道实现目标的更好方法吗 如果您只想要排名前N的城市,那么使用order by和limit将是一种更简单的方法: SELECT * FROM city ORDER BY population DESC LIMIT 5 -- or any other N 如果存在多个人口相同的

我有一个城市表,由ID、姓名、国家代码和人口等字段组成。我想找出人口最多的5个城市的Nsay N=5

一种非常简单的方法是使用最大组函数找到人口最多的城市,然后通过本文提到的方法的变体找到其余的城市


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

如果您只想要排名前N的城市,那么使用order by和limit将是一种更简单的方法:

SELECT   *
FROM     city
ORDER BY population DESC
LIMIT    5 -- or any other N

如果存在多个人口相同的城市,则此查询可能返回五行以上的数据。当存在并列值时,您没有指定前5名的预期结果。

为什么不按总体降序并设置限制N,这将给你N个人口最多的城市,不一定有排名前N的城市。可能有超过N个并列的,也可能有更少的。很显然,你甚至还没有用你的问题标题在谷歌上搜索“stackoverflow sql”。如果有多行具有相同的总体,则可能会出现重复。限制可能不会给出您期望的结果。
SELECT *
FROM cities AS c1
WHERE
(SELECT COUNT(*)
 FROM cities AS c2
 WHERE c2.population > c1.population)<5;