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

MS Access SQL中GROUP BY场景下获取最大ID对应文本字段的问题

MS Access SQL 获取分组内最大ID对应文本的解决方法

为什么Last()函数失效?

Access的Last()函数并非按分组内的ID排序取最后一条,它返回的是数据表物理存储顺序里最后出现的记录字段值,这个顺序和ID自增、插入顺序不一定匹配,分组操作也不会改变它的取值逻辑,所以自然无法对应MAX(id)的那条记录。

正确实现方法

方法一:关联子查询匹配最大ID

直接判断每条记录是否为对应client的最大ID记录:

SELECT s.id, s.text, s.client
FROM sms s
WHERE s.id = (
    SELECT MAX(id) 
    FROM sms 
    WHERE client = s.client
);

方法二:先分组取最大ID再关联原表

先按client分组拿到每组最大ID,再通过ID关联原表获取对应文本:

SELECT g.max_id, s.text, g.client
FROM (
    SELECT client, MAX(id) AS max_id
    FROM sms
    GROUP BY client
) g
INNER JOIN sms s ON g.max_id = s.id AND g.client = s.client;

你之前的子查询失败原因

你之前的写法里,idm是外层查询的别名,Access SQL不支持在同层级子查询中直接引用这个别名,因此触发语法错误,上面两种方法都规避了这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 14:50:56