微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Access SQL Query:只显示最近的重复记录

如何解决Access SQL Query:只显示最近的重复记录

我正在尝试创建一个查询,该查询将过滤一个表,然后只显示每个相应 TRIM Reference ID 的最新记录。

我正在制作一个更新状态系统,并且只想列出每个特定 TRIM Reference ID 的最新状态。每次 TRIM 参考 ID 具有新状态时,都会为该特定更新发布一个唯一 ID。因此,我知道我可以使用最高 ID 来确定要在输出表中显示的记录。

ID TRIM 参考 ID
1 100
2 100
3 100
4 120
5 120
6 100

输出看起来像

ID TRIM 参考 ID
5 120
6 100

我希望输出一个表,每个 'TRIM Reference ID' 都有最新的 ID

我试过了,但有错误

"您的查询包括指定的表达式“ID”作为 一个聚合函数


SELECT [ID],[TRIM_Reference_ID],Max(ID)
FROM UpdateStatus
GROUP BY [TRIM_Reference_ID]
ORDER BY ID;

解决方法

select
    max(ID) ID,[Trim reference id] Trim_Reference_ID
from
    ['Duplicate Data$']
group by
    [Trim reference id]
order by
    ID;
,

这是错误是因为使用 GROUP BY 表达式而没有定义您在 SELECT 语句中使用的所有字段,这些字段不是 聚合 函数 (MAX 、SUM、COUNT 等),如 here 所述。

要解决此问题,您需要将在 select 语句中使用的聚合函数的所有字段添加到 GROUP BY 表达式中。或者仅在 SELECT 中返回您要分组依据的那些。像这样:

SELECT [TRIM_Reference_ID],Max(ID) ID
FROM UpdateStatus
GROUP BY [TRIM_Reference_ID]
ORDER BY ID;
,

如果需要整行,请使用相关子查询:

SELECT u.*
FROM UpdateStatus as u
WHERE u.id = (SELECT MAX(u2.id)
              FROM UpdateStatus as u2
              WHERE u2.TRIM_Reference_ID = u.TRIM_Reference_ID
             )
ORDER BY ID;

无需在一个查询中获取 id,然后在另一个查询中获取行的其余部分——这听起来像是您正在采用的方法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。