Myślę, że poniższe zapytanie przyniesie pożądany rezultat. Najpierw musisz obliczyć pozycję w podzapytaniu. Myślę, że jest to o wiele prostsze niż twoje podejście, wystarczy posortować wyniki według wygranych i różnic w kolejności malejącej (zakładając, że pola są liczbami). Następnie po prostu zaznaczasz wszystkie wyniki i zmieniasz kolejność do opisu gracza.
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
Mam nadzieję, że niczego mi nie brakuje.