suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wählen Sie die richtige Datenbankzeile aus, um gruppierte Ergebnisse zu erhalten

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粉270842688P粉270842688302 Tage vor626

Antworte allen(1)Ich werde antworten

  • P粉964682904

    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

    Antwort
    0
  • StornierenAntwort