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

Rang basierend auf zwei Spalten

Ich denke, dass die folgende Abfrage das gewünschte Ergebnis liefert. Zuerst müssen Sie den Rang in einer Unterabfrage berechnen. Ich denke, es ist viel einfacher als Ihr Ansatz, Sie müssen nur Ihre Ergebnisse nach Siegen und Unterschieden in absteigender Reihenfolge sortieren (angenommen, die Felder sind Zahlen). Dann wählen Sie einfach alle Ergebnisse aus und ändern Reihenfolge zum Spieler desc.

 SELECT player, wins, diff,rank from
 (
 SELECT player, wins, diff, @winrank := @winrank + 1 AS rank
 from tmpPoradi,(SELECT @winrank := 0) r 
 ORDER BY wins DESC,diff DESC
 )  rt
ORDER BY player

Hoffe, ich übersehe nichts.