次のクエリで必要な結果が得られると思います。まず、サブクエリでランクを計算する必要があります。アプローチよりもはるかに簡単だと思います。結果を勝ちで並べ替え、降順で差分をとるだけです(フィールドが数字であると仮定します)。次に、すべての結果を選択して変更します。プレーヤーの説明を注文します。
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
私が何かを逃していないことを願っています。