Wählen Sie die richtige Datenbankzeile aus, um gruppierte Ergebnisse zu erhalten
P粉270842688
P粉270842688 2024-04-05 10:37:31
0
1
553

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.

P粉270842688
P粉270842688

Antworte allen(1)
P粉964682904

你也可以通过选择最大的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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage