如果我的数据是
Name - playerID - matchID - Innings - Runs
James 1 1 1 5
James 1 1 2 8
Darren 2 1 1 3
Darren 2 1 2 9
James 1 2 1 10
James 1 2 2 12
Darren 2 2 1 13
Darren 2 2 2 19
我的sql数据是
$query = "SELECT playerID, name,
SUM(runs) AS runs_scored,
MAX(runs) AS highest_score
FROM matchPlayer GROUP BY playerID";
然后输出会是
James has scored 35 runs with a highest score of 18
Darren has scored 44 runs with a highest score of 19
现在我希望获得一场比赛中的最高总得分(即结合第 1 局和第 2 局)? 我不知道如何开始这个查询:(
编辑 我需要的确切信息是最高匹配总数,因此 James 有 13 次来自 matchID 1 的组合运行和 22 次来自 matchID 2 的组合运行 - 所以我得到的答案是 22。
最佳答案
您需要分两个阶段进行:
SELECT ms.playerID, mp.name, SUM(ms.runs_by_match) AS runs_scored,
MAX(ms.runs_by_match) as highest_score
FROM
matchPlayer as mp
INNER JOIN (
SELECT playerID, matchID, SUM(runs) AS runs_by_match
FROM matchPlayer
GROUP BY playerID, matchID
) AS ms ON mp.playerID = ms.playerID
GROUP BY
ms.playerID, mp.name
关于mysql 查询但是两个不同的组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7327628/