如:
表中有 score 字段和 rank 字段
socre 有数据顺序是乱的
rank 是 0 或者 null
需要先把 score 排序后给 rank 排序赋值如下图效果
已经知道有个方法:
set @mycnt = 0;UPDATE scorelist
SET rank= (@mycnt := @mycnt + 1) ORDER BY score DESC;
score rank
500 0
900 0
300 0
score rank
900 1
500 2
300 3
如果要求并列排名
SET @rank:=0;
SET @preAge:=0;
UPDATE scorelist
,
(
SELECT id, (IF(@preAge <> score, @rank :=@rank + 1, @rank)) ranknum ,@preAge:=score
FROM scorelist
ORDER BY score DESC
) tmp
SET scorelist
.rank=tmp.ranknum
WHERE scorelist
.id=tmp.id
score rank
500 0
900 0
500 0
300 0
score rank
900 1
500 2
500 2
300 3
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于