Sélectionnez la bonne ligne de base de données pour obtenir des résultats groupés
P粉270842688
P粉270842688 2024-04-05 10:37:31
0
1
495

Je souhaite sélectionner le meilleur score pour chaque utilisateur pour un jeu spécifique.

Ma requête actuelle sélectionne le score, la date_saved et le nom d'utilisateur du résultat pour skills_game avec l'identifiant 1.

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

Les résultats sont les suivants :

| 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 |

Actuellement, date_saved n'est pas toujours correct, car le résultat de 73 points de Mark a en fait été enregistré le 03/11/2021. Voici les résultats de Mark :

| score | username | date_saved |
---------------------------------
|    73 |     Mark | 2021-11-03 |
|    35 |     Mark | 2021-10-29 |
|    24 |     Mark | 2021-09-06 |

L'instruction GROUP BY sélectionne la première ligne du groupe et MAX(score) sélectionne le score le plus élevé du groupe. Je veux pouvoir sélectionner le score le plus élevé et sélectionner la date correspondante, mais je ne sais pas comment y parvenir dans MySQL.

P粉270842688
P粉270842688

répondre à tous(1)
P粉964682904

Vous pouvez également le faire en sélectionnant la plus grande 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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal