如何从mysql中的最大查询中获取相应的列?我想知道一个玩家有多少场胜利。我会通过计算玩家赢得的游戏数量来找出答案。这将通过选择每场比赛的最大值和生成的player_id 来完成。但是我不知道如何获取相应的player_id。
我有
id | game_id | player_id | score
1 | 1 | 1 | 254
2 | 1 | 2 | 194
3 | 2 | 1 | 432
4 | 2 | 2 | 298
最佳答案
此查询应该得到您需要的内容:
SELECT
player_id, game_id, score
FROM
(
SELECT game_id,MAX(score) AS MaxScore
FROM games
GROUP BY game_id
) AS Winners
JOIN games
ON (games.game_id = Winners.game_id AND games.score = Winners.MaxScore)
假设平局对双方来说都是胜利。
如果您只想获取玩家及其获胜次数,可以使用以下查询:
SELECT
player_id, COUNT(*) AS wins
FROM
(
SELECT game_id,MAX(score) AS MaxScore
FROM games
GROUP BY game_id
) AS Winners
JOIN games
ON (games.game_id = Winners.game_id AND games.score = Winners.MaxScore)
WHERE player_id = {player_id}
GROUP BY player_id
只需将 {player_id}
替换为您要查找的玩家,wins
是他们获胜或平局的次数。
关于mysql - 获取最大值和对应的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15418496/