首页 >数据库 >mysql教程 >如何从 MySQL 表中可靠地按升序检索最后 N 行?

如何从 MySQL 表中可靠地按升序检索最后 N 行?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-04 09:20:13965浏览

How to Reliably Retrieve the Last N Rows in Ascending Order from a MySQL Table?

从可操作的 MySQL 表中按升序检索最后 N 行

从可能被操作的 MySQL 数据库中检索最后 N 行时,确保按时间顺序 (降序)和升序可能具有挑战性。本文解决了这个问题,提供了使用子查询的解决方案。

以下查询旨在从按主键 id 降序排列的表中选择最后 50 行:

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

但是,这种方法有一个缺陷:如果删除任何行,则后续行将无法按升序准确检索

同样,下面的查询也无法解决操作问题:

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

使用子查询的解决方案:

克服这些限制,可以使用子查询:

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

此查询选择最后 50 行使用子查询从表中按降序排列,然后在检索最终结果之前按升序重新排序。

这种方法允许准确检索最后 N 行,无论进行任何更改或删除到表中,确保数据按所需的时间顺序显示。

以上是如何从 MySQL 表中可靠地按升序检索最后 N 行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn