Jag tror att följande fråga kommer att få det resultat du behöver. Först måste du beräkna rang i en delfråga. Jag tror att det är mycket enklare än ditt tillvägagångssätt, du behöver bara sortera dina resultat efter vinster och skillnader i fallande ordning (förutsatt att fälten är siffror). Sedan väljer du bara alla resultat och ändrar beställning till spelarbeskrivning.
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
Hoppas jag inte missar något.