从MySQL中select最后N行

我想从列名为id主键的 MySQL数据库中select最后50行。 目标是行应按照ASC顺序的IDsorting,这就是为什么这个查询不起作用

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数据库中检索最后N行可以被操纵并按照ASC顺序?

你可以用一个子查询来做到这一点:

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

这将从tableselect最后 50行,然后按升序对其进行sorting。

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

如果您有一个date字段存储发送聊天的date(或时间),或者任何填充了递增(按DESCsorting)或递增(按ASCsorting)每行填充的字段将其作为第二列哪些数据应该是有序的。

这对我来说是有效的! 希望它会帮助!

 SELECT * FROM table ORDER BY id DESC LIMIT 50 

节省资源做一个查询,不需要做嵌套查询