Saya mahu memilih skor terbaik untuk setiap pengguna untuk permainan tertentu.
Pertanyaan semasa saya memilih skor, tarikh_simpan dan nama pengguna keputusan untuk skill_game dengan id 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
Hasilnya adalah seperti berikut:
| 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 |
Pada masa ini, tarikh_simpan tidak selalu betul, kerana keputusan 73 mata Mark sebenarnya disimpan pada 2021-11-03. Berikut adalah keputusan Mark:
| score | username | date_saved | --------------------------------- | 73 | Mark | 2021-11-03 | | 35 | Mark | 2021-10-29 | | 24 | Mark | 2021-09-06 |
Pernyataan GROUP BY memilih baris pertama dalam kumpulan, dan MAX(skor) memilih markah tertinggi dalam kumpulan. Saya mahu dapat memilih skor tertinggi dan memilih tarikh yang sepadan, tetapi saya tidak pasti bagaimana untuk mencapai ini dalam MySQL.
Anda juga boleh melakukannya dengan memilih tarikh_simpan terbesar