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

如何在SQL Server中获取指定id_contacto的最新步骤记录?

解决SQL Server查询最新步骤记录的问题

你的查询返回空结果的原因是:子查询SELECT MAX(FECHA) FROM step取的是整个step表的最大FECHA值,而非id_contacto=680的记录中的最大FECHA。如果该联系人的最新操作时间不是全表最晚的,自然匹配不到结果。

以下是几种正确的写法,按需选择:

方法1:修正子查询条件

给子查询加上id_contacto的过滤,确保取的是目标联系人的最大时间:

SELECT FECHA, id_contacto 
FROM step 
WHERE id_contacto = 680 
AND FECHA = (SELECT MAX(FECHA) FROM step WHERE id_contacto = 680);

方法2:用TOP 1 + 排序(最简洁)

SQL Server支持直接取排序后的第一条记录,适合单条最新记录的场景:

SELECT TOP 1 FECHA, id_contacto 
FROM step 
WHERE id_contacto = 680 
ORDER BY FECHA DESC;

方法3:窗口函数(适合复杂场景)

如果需要给多个联系人同时取最新记录,或者存在相同最大FECHA的多条记录时,用ROW_NUMBER()窗口函数更灵活:

SELECT FECHA, id_contacto
FROM (
    SELECT 
        FECHA, 
        id_contacto,
        ROW_NUMBER() OVER (PARTITION BY id_contacto ORDER BY FECHA DESC) AS rn
    FROM step
    WHERE id_contacto = 680
) AS sub_query
WHERE rn = 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:25:19