2014-10-28 55 views
0

我需要mysql查询帮助。该查询必须能够显示排名,如图片http://s27.postimg.org/loixkzipv/img.png基于两列的排名

如果胜相同,比较对“差异”一栏,维护列表的顺序。请帮助这个查询。谢谢。

我已经试过:

SELECT player, wins, diff, rank 
FROM (
    SELECT player, wins, diff, 
     @curRank := IF(@prevRank = diff, @curRank, @incRank) AS rank, 
     @incRank := @incRank + 1, 
     @prevRank := diff 
    FROM tmpPoradi p, (SELECT @curRank := 0, @prevRank := NULL, @incRank := 1) r 
    ORDER BY diff 
    DESC) s; 

但是这个功能只比较差异,并没有引用胜。我如何让它考虑到胜利?

+1

您的查询看起来如何?你有什么试过,为什么它不起作用? – knittl 2014-10-28 16:54:43

+0

@ knittl - 填充答案 – 2014-10-28 17:01:41

回答

1

我认为下面的查询会得到你需要的结果。首先,您必须计算子查询中的排名。我认为比您的方法简单得多,您只需按降序排序结果(假设字段是数字),然后选择所有结果并更改为了玩家desc。

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 

希望我不会错过任何东西。