2012-03-29 54 views
1

我發現這個問題有一些很好的答案,但我無法真正讓他們工作。從mysql查詢獲得玩家的排名

我不想從hiscore表中獲得球員排名。

id name score 

1 John 10 
2 Linda 5 
3 Emmy 25 

我要在名稱通過查詢(琳達),並得到她的排名(她只在上表5分),並獲得她的等級(NR 3)。

我發現這個答案類似的問題,但不明白:

SELECT uo.*, 
    (
    SELECT COUNT(*) 
    FROM users ui 
    WHERE (ui.points, ui.id) >= (uo.points, uo.id) 
    ) AS rank 
    FROM users uo 
    WHERE id = @id 

在此先感謝

+1

看起來你有優秀作品的答案。計算所有用戶的分數大於或等於指定用戶的分數。 (可以改變爲比想要的更大,也可以加1)。然後,將外部的位置更改爲WHERE name ='Linda'作爲示例。 – 2012-03-29 15:09:59

回答

1

嘗試此查詢 -

SELECT name, score, rank FROM 
    (SELECT *, @r:[email protected] + 1 rank FROM table_name ORDER BY score DESC) t1, 
    (SELECT @r:=0) t2 
WHERE name = 'Linda' 
+0

如果有聯繫,它會失敗! – 2013-05-03 11:18:31

1
SET @rownum := 0; 
SELECT rank, name, score 
FROM 
    (SELECT @rownum := @rownum + 1 AS rank, name, score 
    FROM players 
    ORDER BY score DESC) 
1

SELECT (COUNT(*) + 1) AS rank FROM hiscore WHERE score > (SELECT score FROM hiscore WHERE name = 'Linda')

1

我不知道你想要什麼。它是桌子旁邊的一個整數,它能給你「前10名」嗎?

入住這link