You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从MySQL/MariaDB数据库中查询指定条件的最后3行数据

错误原因

SELECT TOP N 是SQL Server、Access等数据库的专有语法,MariaDB/MySQL不支持该语法,限制返回行数需要使用LIMIT关键字。

正确写法

你要获取符合条件结果的最后3行,核心逻辑是先按排序字段倒序排列,取前3条,再按需转回正序。
通常PoemID是自增主键,默认查询的正序就是按PoemID升序排列,所以最后3行就是PoemID最大的3条:

写法1:结果按PoemID倒序展示(直接取最新3条)

SELECT * FROM poem WHERE MemberID = 54 ORDER BY PoemID DESC LIMIT 3;

以你给出的MemberID=79的示例数据为例,执行上述语句返回结果如下:

+--------+------------------------+--------------------+
| PoemID | Title                  | Description        |
+--------+------------------------+--------------------+
|     54 | Imaginary              | Imagine me         |
|     53 | Love under the sky     | How is your heart? |
|     52 | Kapono                 | Poetic             |
+--------+------------------------+--------------------+

写法2:结果保持原查询的PoemID升序排列

如果需要结果顺序和原查询的最后3行顺序一致,可以在外层再加一层正序排序:

SELECT * FROM (
    SELECT * FROM poem WHERE MemberID = 79 ORDER BY PoemID DESC LIMIT 3
) AS tmp ORDER BY PoemID ASC;

执行后返回结果如下:

+--------+------------------------+--------------------+
| PoemID | Title                  | Description        |
+--------+------------------------+--------------------+
|     52 | Kapono                 | Poetic             |
|     53 | Love under the sky     | How is your heart? |
|     54 | Imaginary              | Imagine me         |
+--------+------------------------+--------------------+

如果你的表有其他排序规则(比如按创建时间排序),只需要把ORDER BY后的字段替换为对应的排序字段即可。


内容的提问来源于stack exchange,提问作者Biax20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:57:00