Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Holen Sie sich den maximalen Wert und die entsprechende Spalte

Diese Abfrage sollte das bekommen, was Sie brauchen:

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)

Es wird davon ausgegangen, dass ein Unentschieden ein Sieg für beide Spieler ist.

SQLFiddle

Wenn Sie nur den Spieler und seine Anzahl an Siegen erhalten möchten, können Sie diese Abfrage verwenden:

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

Ersetzen Sie einfach {player_id} mit dem gesuchten Spieler und wins ist ihre Anzahl an Siegen oder Unentschieden.