我想要為特定遊戲選擇每個用戶的最佳分數。
我的目前查詢選擇了skill_game的id為1的結果的分數、date_saved和使用者名稱。
SELECT MAX(score) as score, date_saved, users.username FROM results INNER JOIN users_results ON results.id = users_results.result_id INNER JOIN users ON users_results.user_id = users.id WHERE skill_game_id = 1 GROUP BY user_id ORDER BY score DESC
結果如下:
| score | username | date_saved | --------------------------------- | 73 | Mark | 2021-09-06 | | 51 | John | 2018-08-16 | | 46 | Ryan | 2020-02-20 | | 43 | Chris | 2019-08-27 | | 40 | Steven | 2020-07-04 |
目前,date_saved並不總是正確的,因為Mark的73分結果實際上是在2021-11-03保存的。以下是Mark的結果:
| score | username | date_saved | --------------------------------- | 73 | Mark | 2021-11-03 | | 35 | Mark | 2021-10-29 | | 24 | Mark | 2021-09-06 |
GROUP BY語句選擇了群組中的第一行,MAX(score)選擇了群組中的最高分數。我想要能夠選擇最高分數並選擇相應的日期,但我不確定如何在MySQL中實現這一點。
P粉9646829042024-04-06 00:37:46
你也可以透過選擇最大的date_saved來完成
SELECT MAX(score) as score, MAX(date_saved), users.username FROM results INNER JOIN users_results ON results.id = users_results.result_id INNER JOIN users ON users_results.user_id = users.id WHERE skill_game_id = 1 GROUP BY user_id ORDER BY score DESC