从聚合函数 MAX/GROUP BY 中检索唯一 ID

retrieve unique ID from aggregate function MAX/GROUP BY

我在使用聚合函数时遇到错误。希望大家帮帮我,我在下面说明了情况。

在 football/soccer 比赛中,一名球员在获得第二张黄牌后得到一张红牌。查询 qry1TwiceYellow 给出了拥有两张黄牌的球员的唯一 ID。查询写在下面并且工作正常。

SELECT Player_ID FROM (SELECT Player_ID, Count(ID) AS Total FROM YellowCards WHERE Game_ID=29 AND HomeOrAway=1 GROUP BY Player_ID) WHERE Total=2;

现在我想检索关于最后一张卡片的一些信息:

我为此编写了以下查询,但这会导致错误(在查询下方)。

SELECT Y.ID, Y.Player_ID, MAX(Y.Minute) As LastYellow FROM qry1TwiceYellow As q INNER JOIN YellowCards As Y ON q.Player_ID = Y.Player_ID WHERE Y.Game_ID=29 AND Y.HomeOrAway=1 GROUP BY Y.Player_ID;

Your query does not include the specified expression 'ID' as part of an aggregate function.

我尝试了以下解决方案:

我该如何解决这个问题?

提前致谢, 克里斯

这是一个查询,它通过计算同一游戏和玩家之前的牌数来选择游戏的所有第二张黄牌:

SELECT Y1.ID, Y1.Player_ID, Y1.Minute
FROM YellowCards Y1
WHERE Y1.Game_ID=29 AND Y1.HomeOrAway=1 
AND (
    SELECT COUNT(*)
    FROM YellowCards Y2
    WHERE Y1.Game_ID = Y2.Game_ID AND Y1.HomeOrAway = Y2.HomeOrAway AND Y1.Player_ID = Y2.Player_ID AND Y1.Minute > Y2.Minute
) = 1;

这是一个SQLFiddle