在列中查找N个最大元素

时间:2016-02-13 09:36:11

标签: mysql sql database select top-n

我有一个城市表,其中包含IDNameCountryCodePopulation等字段。我想找到最大Population的前N个(比如N = 5个)城市。

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

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

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

2 个答案:

答案 0 :(得分:2)

如果您只想要前N个城市,那么使用order bylimit会更简单:

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

答案 1 :(得分:1)

switch(a.getType()){
    case COMPLEX:
        Complex w = (Complex)a.getLiteral();
        //Doing something
        break;
    case MATRIX:
        Matrix w = (Matrix)a.getLiteral();
        //Doing something
        break;
    case VARIABLE:
        Variable w = (Variable)a.getLiteral();
        //Doing something
        break;
    // other types..
    default: // always include a default for your switch case, just in case..
        throw new RuntimeException("unknown type "+a.getType());
}

如果有多个城市具有相同的人口,则此查询可能会返回五行以上。当存在绑定值时,您未指定“前5名”的结果。