153

我想在名为id的列中从 MySQL 数据库中选择最后 50 行,这是primary key。目标是行应按idASC顺序排序,这就是此查询不起作用的原因

SELECT 
    *
FROM
    `table`
ORDER BY id DESC
LIMIT 50;

同样值得注意的是,可以操纵(删除)行,这就是为什么以下查询也不起作用的原因

SELECT 
    *
FROM
    `table`
WHERE
    id > ((SELECT 
            MAX(id)
        FROM
            chat) - 50)
ORDER BY id ASC;

问题:如何从 MySQL 数据库中检索可以操作并按 ASC 顺序排列的最后 N 行?

4

5 回答 5

276

您可以使用子查询来做到这一点:

SELECT * FROM (
    SELECT * FROM table ORDER BY id DESC LIMIT 50
) sub
ORDER BY id ASC

这将从 中选择最后50 行table,然后按升序对它们进行排序。

于 2012-08-25T21:49:04.483 回答
18
SELECT * FROM table ORDER BY id DESC LIMIT 50

节省资源一次查询,无需嵌套查询

于 2015-08-06T21:40:43.117 回答
11
SELECT * FROM table ORDER BY id DESC,datechat desc LIMIT 50

如果您有一个日期字段存储发送聊天的日期(和时间),或者任何以递增方式(按 DESC 排序)或逐行递增(按 ASC 排序)填充数据的字段,请将其作为第二列数据应该是有序的。

这对我有用!!!!希望它会有所帮助!!!!

于 2016-01-26T12:11:31.193 回答
0

用它从mysql中检索最后n行

Select * from tbl order by id desc limit 10;

根据N值限制使用。

于 2022-02-11T13:44:46.933 回答
-3
select * from Table ORDER BY id LIMIT 30

注意: *id应该是唯一的。* 可以通过替换30查询中的来控制返回的行数

于 2019-07-05T13:36:09.163 回答