从MySQL中选择最后N行

时间:2012-08-25 21:46:32

标签: mysql database

我想在名为 id 的列中选择MySQL数据库中的最后50行,这是主键。目标是行应按 id 按 ASC 顺序排序,这就是为什么此查询无法正常工作

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 个答案:

答案 0 :(得分:190)

您可以使用子查询执行此操作:

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

这将从table中选择 last 50行,然后按升序排序。

答案 1 :(得分:7)

SELECT * FROM table ORDER BY id DESC,datechat desc LIMIT 50

如果您有一个日期字段,用于存储发送聊天的日期(和时间)或任何以递增方式填写的字段(按DESC排序)或逐渐减少(按ASC排序)数据,则将其设置为第二列,数据应在其上订购。

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

答案 2 :(得分:2)

SELECT * FROM table ORDER BY id DESC LIMIT 50

保存资源进行一次查询,不需要进行嵌套查询

答案 3 :(得分:0)

select * from Table ORDER BY id LIMIT 30

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