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

如何在Microsoft Access中获取每个用户的最新比赛日期与结果?解决查询报错

解决Access查询聚合函数错误并获取用户最新比赛信息

错误原因

你遇到的错误源于Access聚合查询的规则:所有未使用聚合函数的字段必须出现在GROUP BY子句中。你的查询里SELECT包含了tblPlayer.PlayerName,但GROUP BY仅指定了tblParticipant.ParticipantID,不符合规则,因此触发报错。

如果仅修正GROUP BY只能获取用户名和最新比赛时间,无法直接关联对应比赛的Result字段。以下提供两种解决方案,优先推荐第二种以满足你获取最新比赛结果的需求。

方案一:修正GROUP BY(仅获取最新时间与用户名)

将tblPlayer.PlayerName加入GROUP BY子句,符合Access聚合规则:

SELECT Max(tblMatch.[MatchStart]) AS [MostRecent], tblPlayer.PlayerName
FROM (tblMatch
INNER JOIN tblParticipant ON tblMatch.MatchID=tblParticipant.ParticipantID)
INNER JOIN tblPlayer ON tblParticipant.ParticipantID=tblPlayer.PlayerID
GROUP BY tblParticipant.ParticipantID, tblPlayer.PlayerName;

方案二:子查询法(获取最新时间、用户名及对应比赛结果)

通过子查询先确定每个用户的最新比赛时间,再关联原表精准获取对应比赛的结果:

SELECT 
    p.PlayerName,
    m.MatchStart AS MostRecent,
    m.Result
FROM 
    tblPlayer p
INNER JOIN tblParticipant par ON p.PlayerID = par.ParticipantID
INNER JOIN tblMatch m ON par.MatchID = m.MatchID
INNER JOIN (
    SELECT 
        par_inner.ParticipantID,
        Max(m_inner.MatchStart) AS LatestMatchTime
    FROM 
        tblMatch m_inner
    INNER JOIN tblParticipant par_inner ON m_inner.MatchID = par_inner.ParticipantID
    GROUP BY par_inner.ParticipantID
) sub ON par.ParticipantID = sub.ParticipantID AND m.MatchStart = sub.LatestMatchTime;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:33:19