選擇正確的資料庫行以實現分組結果
P粉270842688
P粉270842688 2024-04-05 10:37:31
0
1
498

我想要為特定遊戲選擇每個用戶的最佳分數。

我的目前查詢選擇了skill_game的id為1的結果的分數、date_saved和使用者名稱。

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

結果如下:

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

目前,date_saved並不總是正確的,因為Mark的73分結果實際上是在2021-11-03保存的。以下是Mark的結果:

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

GROUP BY語句選擇了群組中的第一行,MAX(score)選擇了群組中的最高分數。我想要能夠選擇最高分數並選擇相應的日期,但我不確定如何在MySQL中實現這一點。

P粉270842688
P粉270842688

全部回覆(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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板