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

SQL查询需求:仅返回符合条件的最后一行,否则返回空集

解决方案

可以通过子查询先锁定最新行,再在外层进行条件过滤,实现你的需求:

SELECT *
FROM (
    SELECT * 
    FROM table 
    ORDER BY id DESC 
    LIMIT 1
) AS latest_row
WHERE value = 'pass';

逻辑说明

  1. 子查询SELECT * FROM table ORDER BY id DESC LIMIT 1会先取出ID最大的那一行(也就是你说的最后一行);
  2. 外层查询对这唯一的一行做value = 'pass'的判断,只有符合条件时才返回该行数据,否则返回空结果集,完全避免了直接加WHERE会返回ID=3的情况。

另外,如果你的数据库支持无GROUP BY时使用HAVING(比如MySQL),也可以用更简洁的写法:

SELECT *
FROM table
ORDER BY id DESC
LIMIT 1
HAVING value = 'pass';

这个写法利用LIMIT 1先拿到最新行,再通过HAVING过滤该行的value值,效果和子查询写法一致,但兼容性稍差,建议优先使用子查询写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:32:38