mysql排序字段增量值

use*_*585 5 mysql increment

说我有一张桌子

name             rank
-----------------------
John             1
Tit              3
Bernard          4
Run Code Online (Sandbox Code Playgroud)

排名2缺失,可能已被删除或其他.我需要一个查询来增加排名字段.所以约翰将成为第一名,但是现在是第2名,而伯纳德则是第3名.

可能有多达100个等级,有几个失踪.只要最小的等级重置为数字1,并且所有后续增量,它应该是好的.

有任何想法吗?

用于更新排名字段的查询.

Arn*_*anc 6

这将更新排名字段,使其增加没有漏洞:

SET @i := 0;
UPDATE tbl SET rank = @i:=@i+1 ORDER BY rank;
Run Code Online (Sandbox Code Playgroud)