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

如何查询MS Access中每组记录的最新更新数据?

解决MS Access中获取每个file_number最新记录的问题

问题原因

你之前的SQL无法过滤旧记录,核心原因是将唯一标识unique_id和value加入了GROUP BY。因为unique_id是每行唯一的,分组后每条记录都会成为独立分组,MAX(filing_date)只能返回当前行的日期,完全起不到筛选同一file_number下最新记录的作用。

解法一:子查询关联(通用写法)

先通过子查询找出每个file_number对应的最新filing_date,再关联原表获取完整的记录信息:

SELECT t.unique_id, t.name, t.file_number, t.filing_date AS last_date, t.value
FROM [table] t
INNER JOIN (
    -- 子查询:获取每个file_number的最新日期
    SELECT file_number, MAX(filing_date) AS max_filing_date
    FROM [table]
    WHERE form_type = "update"
    GROUP BY file_number
) latest 
ON t.file_number = latest.file_number AND t.filing_date = latest.max_filing_date
WHERE t.form_type = "update"

注意:如果你的表名是table这类SQL关键字,必须用方括号[table]包裹,避免Access语法报错。

解法二:使用TOP 1 WITH TIES(Access专属简化写法)

MS Access支持TOP 1 WITH TIES语法,能直接返回每个分组的最新记录,写法更简洁:

SELECT TOP 1 WITH TIES
    unique_id, name, file_number, filing_date AS last_date, value
FROM [table]
WHERE form_type = "update"
-- 先按file_number分组,再按日期倒序,确保最新记录排在前面
ORDER BY file_number, filing_date DESC

这个语句的逻辑是:按file_number分组,每组内按filing_date降序排列,TOP 1 WITH TIES会返回所有与每组第一条(最新日期)排序键一致的记录,也就是每个file_number的最新更新记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 04:00:01