sql >> Databasteknik >  >> RDS >> Mysql

Få maxvärde och motsvarande kolumn

Den här frågan bör få det du behöver:

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)

Det förutsätter att oavgjort är en vinst för båda spelarna.

SQLFiddle

Om du bara vill få spelaren och deras antal vinster kan du använda den här frågan:

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

Byt bara ut {player_id} med spelaren du letar efter och wins är deras antal vinster eller oavgjorda.




  1. Optimerar min mysql-fråga för att använda index för sortering

  2. Bra praxis att använda omvända index på surrogatnycklar? (Orakel)

  3. Docker compose postgresql service - kan inte skapa användare och databas under byggandet?

  4. Identifiera django många-till-många länkar programmerat