MySQL排序时,排名不唯一怎么办?

3

可能重复:
如何在MySQL中排列结果并处理并列情况?

我想按照表格StatusActivepoints字段排序,并将排名插入到一个名为rank的列中。 它应该是这样的:

RANK   USERNAME   ACTIVEPOINTS

 1     monkey100     92
 2     fresnoJump    54
 3     otherUser9    54

但它应该显示不唯一的排名,如下所示
RANK   USERNAME   ACTIVEPOINTS

 1     monkey100     92
 2     fresnoJump    54
 2     otherUser9    54

3
你能展示一下你目前正在使用的代码吗? - Jim
1
如果您添加了另一个具有49点的用户,他们的排名应该是“3”还是“4”? - Simon
@simon 当然是 4 了吧?? - Kayser
1个回答

1
我认为这个问题可以用2个UDF变量 http://dev.mysql.com/doc/refman/5.0/en/user-variables.html 来解决。
SET @rank = 0, @previous_active_points = 0;
SELECT IF(@previous_active_points<>Activepoints,@rank:=@rank+1,@rank) AS rank,
@previous_active_points:=Activepoints,username,Activepoints 
FROM `status` ORDER BY Activepoints

希望能对你有所帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接