Ich möchte für jeden Benutzer die beste Punktzahl für ein bestimmtes Spiel auswählen.
Meine aktuelle Abfrage wählt die Punktzahl, das Datum und den Benutzernamen des Ergebnisses für Skill_Game mit der ID 1 aus.
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
Die Ergebnisse sind wie folgt:
| 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 |
Derzeit ist date_saved nicht immer korrekt, da Marks 73-Punkte-Ergebnis tatsächlich am 03.11.2021 gespeichert wurde. Hier sind Marks Ergebnisse:
| score | username | date_saved | --------------------------------- | 73 | Mark | 2021-11-03 | | 35 | Mark | 2021-10-29 | | 24 | Mark | 2021-09-06 |
Die GROUP BY-Anweisung wählt die erste Zeile in der Gruppe aus und MAX(score) wählt die höchste Punktzahl in der Gruppe aus. Ich möchte die höchste Punktzahl und das entsprechende Datum auswählen können, bin mir aber nicht sicher, wie ich das in MySQL erreichen kann.
你也可以通过选择最大的date_saved来完成