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

MySQL Max mit Gruppieren nach Abfrage

Dies sollte Ihnen das gewünschte Ergebnis liefern. Da MySql keine PARTITION hat Funktion als SQL SERVER, habe ich eine bekannte Problemumgehung verwendet.

SELECT tmp.id, tmp.userid,tmp.username,tmp.`date`,score FROM
   (SELECT *, IF(@prev<>userid, @rownum := 1, @rownum := @rownum+1 ) AS rank,
           @prev := userid
    FROM scores s0
    JOIN (SELECT @rownum := NULL, @prev := 0) AS r
    ORDER BY s0.userid, s0.score DESC, s0.`date` DESC
   ) AS tmp
WHERE tmp.rank=1
ORDER BY tmp.score DESC, tmp.`date` desc