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

SQL中如何筛选指定status的最大日期对应id并赋值给变量

正确实现方案

方案1:子查询匹配最大日期

SELECT @MaxID = id
FROM @DateValues
WHERE STATUS = 'ABC'
  AND dates = (
    SELECT MAX(dates)
    FROM @DateValues
    WHERE STATUS='ABC'
);

方案2:TOP+排序(更简洁,适配多匹配行场景)

如果同一天存在多条status为ABC的记录,想要明确取id最大的那行可以用这个写法:

SELECT TOP 1 @MaxID = id
FROM @DateValues
WHERE STATUS = 'ABC'
ORDER BY dates DESC, id DESC;

原有代码问题说明

  • 第一段分组查询:你按id和STATUS分组,每条符合条件的记录都是独立分组,所以会返回所有status为ABC的行,自然出现多个结果集。
  • 第二段嵌套查询:外层查询没有加STATUS='ABC'的过滤条件,如果最大日期对应的行存在status不为ABC的记录也会被返回,且同日期下有多个匹配值时也会返回多个结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:15:02