Phpmyadmin

如何為每位使用者獲得獨特的高分

  • March 26, 2012

我有以下表格:usershighscores

我想在高分中獲得前十名的最佳成績。分數應該是唯一的,即每個使用者一個分數。我嘗試使用INNER JOINGROUP但這沒有返回正確的數據。我得到了正確的 uid、分數、別名和電子郵件,但時間不正確。好像是取自另一個高分帖。如何獲得正確的數據?一旦我們找到“最佳分數”,我就想要來自完全相同的文章的所有其他內容(時間)。

SELECT UID, ALIAS, EMAIL, SCORE, TIME
FROM users t
INNER JOIN (SELECT user_uid, MAX(score) as SCORE, value1 as TIME
           FROM highscores
           GROUP BY user_uid) x
 ON x.user_uid = t.uid
ORDER BY SCORE DESC
LIMIT 0, 10

分別從高分錶中提取時間MySQL預設

不遵守 ANSI 標準聚合:因此您的數據不可靠

SELECT 
   u.UID, u.ALIAS, u.EMAIL, h.SCORE, h.value1 AS TIME
FROM 
  (
   SELECT user_uid, MAX(score) as SCORE
   FROM highscores
   GROUP BY user_uid
  ) x
  JOIN
  highscores h ON x.user_uid = h.user_uid AND x.SCORE = h.SCORE
  JOIN
  users u ON h.user_uid = u.uid
ORDER BY h.SCORE DESC
LIMIT 0, 10

這假設每個使用者沒有多個具有相同值的高分。

如果你這樣做,你需要一個帶有聚合的第二個派生表來嵌套 x/h JOIN

引用自:https://dba.stackexchange.com/questions/15563