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

如何高效地从 MySQL 中按升序检索最后 N 行?

Patricia Arquette
发布: 2024-12-13 16:53:15
原创
987 人浏览过

How to Efficiently Retrieve the Last N Rows from MySQL in Ascending Order?

按升序从 MySQL 检索最后 N 行

从 MySQL 数据库检索最后 N 行可能是一项常见任务,尤其是使用大桌子时。但是,在确保数据完整性的同时按升序对结果进行排序可能会成为一项挑战。

考虑以下查询:

SELECT 
    *
FROM
    `table`
ORDER BY id DESC
LIMIT 50;
登录后复制

乍一看,此查询似乎选择最后 50 行。但是,它是按降序(从大到小)执行的,这违反了升序的要求。

另一种方法是:

SELECT 
    *
FROM
    `table`
WHERE
    id > ((SELECT 
            MAX(id)
        FROM
            chat) - 50)
ORDER BY id ASC;
登录后复制

此查询旨在检索具有 ID 的行大于最大 ID 负 50。但是,它也会失败,因为数据会受到操纵,并且可能会删除行,从而可能会影响

解决方案:子查询方法

为了解决这些挑战,可以使用子查询:

SELECT * FROM
(
 SELECT * FROM table ORDER BY id DESC LIMIT 50
) AS sub
ORDER BY id ASC;
登录后复制

此查询涉及一个子查询,按降序选择最后 50 行。然后,该子查询的结果存储在名为“sub”的临时表中。最后,外部查询从“sub”中选择所有行,并按升序对它们进行排序。

这种方法确保即使对表进行操作,也会选择最后 50 行,并且结果以升序呈现订购。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板