从 MySQL 中选择最后 N 行

我想在名为 身份证的列中从 MySQL 数据库中选择最后50行,即 主键。目标是这些行应该按 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 行?

313466 次浏览

你可以通过一个子查询来完成:

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

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

SELECT * FROM table ORDER BY id DESC LIMIT 50

节省资源做一个查询,就没有必要做嵌套查询

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

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

这对我很有效! ! ! 希望它能有所帮助! ! ! !

select * from Table ORDER BY id LIMIT 30

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

使用它从 mysql 检索最后 n 行

选择 * 从 tbl 的命令由 id Desc 限制10;

按 N 值使用限制。

如果有人需要这个 你可以把这个变成

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

进入

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