选择MySQL中的前十行

选择MySQL中的前十行,mysql,sql,Mysql,Sql,我的表格gainfinal由countrycode、year和values三列组成。我要选择具有前十个值的十行。首先,我使用以下查询根据值创建了一个排名 SELECT countrycode, `values`, @curRank := @curRank + 1 AS rank FROM gainfinal CROSS JOIN (SELECT @curRank := 0) vars WHERE year = 2000 ORDER By `valu

我的表格gainfinal由countrycode、year和values三列组成。我要选择具有前十个值的十行。首先,我使用以下查询根据值创建了一个排名

    SELECT countrycode, `values`,
    @curRank := @curRank + 1 AS rank
    FROM gainfinal CROSS JOIN
    (SELECT @curRank := 0) vars
    WHERE year = 2000
    ORDER By `values` DESC ;

现在,我需要选择排名最高的前十行。我怎么做

您可以使用:Limit从第20行开始获得10行

    SELECT countrycode, `values`,
    @curRank := @curRank + 1 AS rank
    FROM gainfinal CROSS JOIN
    (SELECT @curRank := 0) vars
    WHERE year = 2000
    ORDER By `values` DESC ;
SELECT countrycode, `values`,
@curRank := @curRank + 1 AS rank
FROM gainfinal CROSS JOIN
(SELECT @curRank := 0) vars
WHERE year = 2000
ORDER By `values` DESC
LIMIT 10;
LIMIT 10 OFFSET 20 --Equivalent to LIMIT 20, 10
使用

    SELECT countrycode, `values`,
    @curRank := @curRank + 1 AS rank
    FROM gainfinal CROSS JOIN
    (SELECT @curRank := 0) vars
    WHERE year = 2000
    ORDER By `values` DESC ;
在SQL so示例中:

    SELECT countrycode, `values`,
    @curRank := @curRank + 1 AS rank
    FROM gainfinal CROSS JOIN
    (SELECT @curRank := 0) vars
    WHERE year = 2000
    ORDER By `values` DESC ;
SELECT countrycode, `values`,
@curRank := @curRank + 1 AS rank
FROM gainfinal CROSS JOIN
(SELECT @curRank := 0) vars
WHERE year = 2000
ORDER By `values` DESC
LIMIT 10

还可以在where语句中使用秩变量

    SELECT countrycode, `values`,
    @curRank := @curRank + 1 AS rank
    FROM gainfinal CROSS JOIN
    (SELECT @curRank := 0) vars
    WHERE year = 2000
    ORDER By `values` DESC ;
...WHERE year = 2000 and @curRank <11;

…其中year=2000和@curRank在查询中添加
限制10