我知道這已被覆蓋一些,但它並沒有幫助我的情況,而是有排名差異。想知道是否有人能夠幫助!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提供儘可能多的信息,我可以。提前致謝!
編輯你的問題,並提供樣本數據和預期結果。 –
這可能是因爲你的'SELECT GROUP_CONCAT'子查詢不會過濾「deleted」('deleted is null')條目。 –
你先生,真棒。 實際上,另一條記錄已被刪除,但我沒有清除該表中的條目。 謝謝! – TheMellor