【发布时间】:2020-12-29 18:10:21
【问题描述】:
我有一张名为 times 的表格,我在其中记录赛车游戏的比赛信息:
race_id map name time
30509 desert Peter 12.68
30510 desert Jakob 10.72
30511 desert Peter 18.4
30512 jungle Peter 39.909
30513 jungle Peter 39.84
30514 desert Harry 16.129
30515 space Harry 774.765
30516 jungle Jonas 46.047
30517 city Jonas 23.54
30518 city Jonas 23.13
30519 desert Mike 22.9
30520 space Fred 174.244
我有两个问题。我最好怎么做:
- 找到给定地图上的最低时间(世界纪录)?
我试过这个查询:
SELECT *, MIN(time) FROM times WHERE map = 'desert';
这会产生一个看似不正确的任意行,并在其中添加了一个名为 MIN(time) 的列,其中正确的最低时间是。
- 找出所有地图上的最低时间,但仅由特定玩家完成(查找特定玩家的所有世界纪录)?
为此,我尝试了以下查询:
SELECT *, MIN(time) FROM times WHERE name = 'Peter' GROUP BY map;
这似乎只返回每个地图的给定名称的第一行,无论它是否是最低时间。
我对 SQL(MySQL) 还很陌生,所以我可能在这里遗漏了一些明显的东西。我已经环顾四周了很长一段时间,任何帮助将不胜感激。谢谢!
【问题讨论】:
标签: mysql sql subquery sql-order-by greatest-n-per-group