Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir la valeur Max et la colonne correspondante

Cette requête devrait obtenir ce dont vous avez besoin :

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)

Il suppose qu'une égalité est une victoire pour les deux joueurs.

SQLFiddle

Si vous souhaitez obtenir uniquement le joueur et son nombre de victoires, vous pouvez utiliser cette requête :

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

Remplacez simplement {player_id} avec le joueur que vous recherchez et wins est leur nombre de victoires ou d'égalités.