Saya pikir kueri berikut akan mendapatkan hasil yang Anda butuhkan. Pertama, Anda harus menghitung peringkat dalam subquery. Saya pikir itu jauh lebih sederhana daripada pendekatan Anda, Anda hanya perlu mengurutkan hasil Anda dengan menang dan diff dalam urutan menurun (misalkan bidangnya adalah angka). Kemudian Anda tinggal memilih semua hasil dan ubah pesanan ke deskripsi pemain.
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
Semoga saya tidak melewatkan apa pun.