我想从MySQL数据库中 Select id列(primary key)中的最后50行.目标是这些行应该按照ASC的顺序按id排序,这就是为什么这个查询不起作用

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

另外值得注意的是,行可以被操作(删除),这就是为什么下面的查询也不起作用

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

Question:如何从MySQL数据库中检索最后N行,这些行可以被操作并按ASC顺序排列?

推荐答案

您可以通过子查询来实现:

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

这将从table行中 Select last50行,然后按升序排列.

Mysql相关问答推荐

添加日期日期,而不使用addDate

如何获得表中只有最大值行的一个列被另一个列分区?

了解查询中ORDER BY的行为

不分组寻呼

亚马逊RDS MySQL-无法';t执行';使用读取锁定刷新表';

多列分组并进行求和

看不懂mysql自左连接查询

MySQL 8.0 可以在 Select 语句中返回 JSON 对象数组吗?

Select 最高等级最多的部门名称

多个 FULLTEXT 索引上的 MySQL SELECT.结果极其缓慢

在 Codeigniter MySQL 中从另一个数据库获取数据

MySQL 中的 LATERAL 语法 - 是否只是说左表首先执行以便下一个可以引用它?

处理 Visits 表中数百万行的最佳方法是什么?

具有别名主机的 ssh 反向 mysql tunel

MySQL 如何处理并发插入?

什么是 PyMySQL,它与 MySQLdb 有何不同?它会影响 Django 部署吗?

在 WHERE 子句中使用 CASE

MySQL错误 1005 (HY000): 无法创建表 'foo.#sql-12c_4' (errno: 150)

如何将 MySQL 查询结果存储在另一个表中?

在 MySQL 中存储 IPv6 地址