Penso che la seguente query otterrà il risultato di cui hai bisogno. Per prima cosa devi calcolare il rango in una sottoquery. Penso che sia molto più semplice del tuo approccio, devi solo ordinare i risultati per vittorie e differenze in ordine decrescente (supponendo che i campi siano numeri). Quindi seleziona tutti i risultati e cambia ordina alla descrizione del giocatore.
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
Spero di non perdermi nulla.