代码之家  ›  专栏  ›  技术社区  ›  Marius

如何在MySQL中按降序对前10个条目进行排序?

  •  1
  • Marius  · 技术社区  · 14 年前

    我有一张桌子,上面放着可以按等级排序的条目。我想得到前10个条目(这很简单 SELECT * FROM table ORDER BY rank DESC ,但是我希望这些条目是按降序排列的,所以排名最低的条目最终会出现在顶部。我该怎么做?

    2 回复  |  直到 14 年前
        1
  •  9
  •   onik    14 年前
    (SELECT * FROM table ORDER BY rank DESC LIMIT 10) ORDER BY rank ASC;
    

    这就是你要找的吗?

        2
  •  3
  •   Community CDub    8 年前

    你应该能够做到:

    SELECT    * 
    FROM      (SELECT * FROM `table` ORDER BY rank DESC LIMIT 10) dt
    ORDER BY  dt.rank ASC;
    

    我想你有一张这样的桌子:

    CREATE TABLE `table` (id int, rank int);
    INSERT INTO `table` VALUES (1, 20), (2, 19), (3, 18), (4, 17), (5, 16), (6, 15),
                               (7, 14), (8, 13), (9, 12), (10, 11), (11, 10), 
                               (12, 9), (13, 8), (14, 7), (15, 6), (16, 5), (17, 4), 
                               (18, 3), (19, 2), (20, 1);
    

    你会得到这样的结果:

    +------+------+
    | id   | rank |
    +------+------+
    |   10 |   11 |
    |    9 |   12 |
    |    8 |   13 |
    |    7 |   14 |
    |    6 |   15 |
    |    5 |   16 |
    |    4 |   17 |
    |    3 |   18 |
    |    2 |   19 |
    |    1 |   20 |
    +------+------+
    10 rows in set (0.02 sec)
    

    更新:

    @onik's solution 返回相同的结果。