假設我們有一個表:MySQL的選擇最多爲每個USER_ID,也得到一些其他領域
+----+---------+-------+--------+
| id | user_id | score | errors |
+----+---------+-------+--------+
| 1 | 123 | 50 | 12 |
| 2 | 123 | 55 | 7 |
| 3 | 444 | 90 | 1 |
| 4 | 555 | 78 | 2 |
| 5 | 123 | 50 | 0 |
+----+---------+-------+--------+
如何選擇3個用戶提供最高分和錯誤這些MAX成績嗎? 我期待得到ids: 3,4和5
P.S.我使用MySQL only_full_group_by啓用
更新:我必須得到最高分的每個用戶,並精確字段錯誤(這是關係到MAX比分該用戶)
答: 這可能是簡單的使用以下查詢完成。但是,如果一個用戶有兩個相同的MAX分數(例如用戶123有2個記錄,分數= 50),則會爲該用戶返回2條記錄。在這裏,我們可以(使用PHP或一些其他語言,如指數USER_ID)
SELECT t1.user_id, max_score, errors
FROM tbl t1 JOIN (
SELECT max(score) AS max_score, user_id
FROM tbl
GROUP BY user_id
) t2 ON t1.user_id = t2.user_id AND t1.score = t2.max_score;
的可能的複製[MYSQL GROUP BY MAX得分](HTTP選擇的行。 com/q/23192153/3340665) – GhostGambler
得分與MAX得分相同嗎?或者用戶在表格中有兩行,分數不同?桌子的主要關鍵是什麼? – Julian
我想要前三名的成績,我希望你能得到id 3,4和** 2 **。 –