1

我有一个 MySql 表,它包含两个基本的东西:id 和一个值。为了在我的页面上显示,我需要选择,例如,倒序的最后 100 行。所以想象一下有人在上面放数据:

Id, value
1, 10
2, 9
3, 21
4, 15

我需要选择最后的“3”行(LIMIT + ORDER 子句),但不是这样:4,3,2,而是这样:2,3,4。

我知道如何在代码上做到这一点,但也许在 Mysql 上有一个简单的解决方案,我不知道。谢谢

我的 SQL 查询现在是这样的:

SELECT `Data`.`id`, `Data`.`log_id`, `Data`.`value`, `Data`.`created` FROM `control_panel`.`datas` AS `Data` WHERE `Data`.`id` > 1000 AND `Data`.`log_id` = (2) ORDER BY `Data`.`id` DESC LIMIT 100
4

3 回答 3

4

您需要将第一个包装ORDER BY在一个子选择中,这将返回一个按降序排列的有限选择,然后您可以按升序对该结果进行排序:

SELECT
    a.*
FROM
    (
        SELECT id, value
        FROM tbl
        ORDER BY id DESC
        LIMIT 3
    ) a
ORDER BY
   a.id
于 2012-07-03T03:55:31.407 回答
3

一种方法是使用子选择。

SELECT *
FROM (SELECT * FROM table_name ORDER BY id DESC LIMIT 3) tmp
ORDER BY id ASC
于 2012-07-03T03:49:23.430 回答
0

简单地

 SELECT t.*
 (SELECT * FROM table_name 
      ORDER BY column_name DESC 
      LIMIT 0,3) t
 ORDER BY t.column_name ASC

使用DESC降序,ASC升序

于 2012-07-03T05:05:13.953 回答