1

リーダーボード テーブルで一連のユーザーをランク付けする次の SQL スクリプトがあります。

UPDATE leaderboard
JOIN   (SELECT f.winnings ,
IF     (@lastPoint <> f.winnings,
        @curRank := @curRank +1, 
        @curRank) AS rank, 
        @lastPoint := f.winnings
FROM   leaderboard f
JOIN   (SELECT @curRank := 0, @lastPoint := 0) r
WHERE f.competition =5
ORDER BY f.winnings DESC
) ranks ON (ranks.winnings = leaderboard.winnings)
SET leaderboard.rank = ranks.rank WHERE leaderboard.id =89;

ただし、すべてのユーザーのランクが 0 の場合、それらを 1 としてランク付けすることはありません (つまり、等しい)。この動作は 0 の場合にのみ発生します。

winnings  rank
0          0
0          0
0          0

誰でもこれを行う方法を知っていますか..?

winnings  rank
0          1
0          1
0          1

SQL フィドルhttp://sqlfiddle.com/#!2/53c3a/1

4

2 に答える 2