sql >> Database >  >> RDS >> Mysql

Max-waarde en bijbehorende kolom ophalen

Deze zoekopdracht zou moeten geven wat je nodig hebt:

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)

Het gaat ervan uit dat een gelijkspel een overwinning is voor beide spelers.

SQLFiddle

Als je alleen de speler en hun aantal overwinningen wilt krijgen, kun je deze zoekopdracht gebruiken:

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

Vervang gewoon {player_id} met de speler die je zoekt en wins is hun aantal overwinningen of gelijkspel.




  1. Een tabel maken in MySQL bij gebruik van java

  2. PHP Meerdere rijen verwijderen met selectievakje

  3. Hoe PHP MySQL-databaseverbinding te testen met behulp van script

  4. MySQL-replicatie en op GTID gebaseerde failover - een diepe duik in foutieve transacties