2014-10-28 87 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 

希望我不會錯過任何東西。