2017-04-09 103 views
0

我知道這已被覆蓋一些,但它並沒有幫助我的情況,而是有排名差異。想知道是否有人能夠幫助!MySQL排名,無法正常工作

所以我有一個遊戲,數據庫表是: 用戶,地圖,暱稱,user_game_scores

即時通訊發展的領導者板能夠容易地得到按照分值進行排序的信息。太棒了。

但我想排名,這樣我可以拉一個特定的用戶分數和排名相關的所有分數。例如:

全局評分

user info - Score - (rank)1 
user info - Score - (rank)2 
user info - Score - (rank)3 
etc. 

而USER分數更可能是:

user info - Score - (rank)82 
user info - Score - (rank)94 
user info - Score - (rank)115 
etc. 

我想象的實現是這樣的:

SELECT users.first_name, users.surname, player_nicknames.nickname, maps.map_name, user_game_scores.score, 
FIND_IN_SET(score, (SELECT GROUP_CONCAT(score ORDER BY score DESC) FROM user_game_scores)) AS rank 
FROM `user_game_scores` 
INNER JOIN users ON user_game_scores.user_id = users.user_id 
INNER JOIN maps ON user_game_scores.map_id = maps.map_id 
INNER JOIN player_nicknames ON user_game_scores.user_id = player_nicknames.user_id 
WHERE user_game_scores.deleted is null 
AND users.deleted is null 
AND player_nicknames.deleted is null 
ORDER BY user_game_scores.score DESC 

But it returns this: (click here) - names etc have been removed from the image as it may not be appropriate to display 正如你可以看到等級傾向於錯過一兩個(第2和第23)。我明白像24級的東西會分組和繼續(我喜歡在那種情況下發生),但我不明白爲什麼一些排名失蹤,真的不想發佈過程中的這個功能。

對不起,這很長,但我認爲ID提供儘可能多的信息,我可以。提前致謝!

+0

編輯你的問題,並提供樣本數據和預期結果。 –

+0

這可能是因爲你的'SELECT GROUP_CONCAT'子查詢不會過濾「deleted」('deleted is null')條目。 –

+0

你先生,真棒。 實際上,另一條記錄已被刪除,但我沒有清除該表中的條目。 謝謝! – TheMellor

回答

0

這可能是因爲您的SELECT GROUP_CONCAT子查詢不會過濾「已刪除」(已刪除爲空)條目。 - Paul Spiegel 9小時前