我正在製作一個系統,用戶通過網站上的某些操作獲得成就。我在使用mysql的成就排名時遇到問題
數據庫分爲三個,用戶,成績和表中的兩個鏈接。
對於排名,重要的是鏈接用戶和成就的表。 結構是這樣的(稱爲user_achievements):
| id | user_id | achievement_id | created_at | updated_at |
在世界排名應該是最成就的人,誰贏得了第一。
是組裝查詢:
SELECT user_id,
COUNT(achievement_id) AS 'total',
created_at
FROM `user_achievements`
GROUP BY user_id ORDER BY total DESC, created_at ASC LIMIT 10
此查詢的工作,但問題是「分組依據」對誰擁有最多的成就(爲「總」),它不會備份的最後一個created_at用戶。來到第一個created_at那個用戶,這不適合誰是第一個獲得這些成就的人。
我的系統使用Ruby on Rails,有沒有解決這個ActiveRecord中的查詢,會有很大的幫助。
非常感謝! 對不起,我的英語...
其推薦的做法是隻選擇按字段和聚合函數分組。 您剛剛created_at的投影是錯誤的 – rshetye