我在尝试从mySQL表检索数据时遇到麻烦。该表保存了所有参赛者在赛车比赛中的所有单圈时间。该表为每个种族有多个条目。我想选择每个参与者的最佳圈速,但是我不确定如何摆脱每个参与者的重复。

我尝试了以下语句。

SELECT *
FROM   laptimes
GROUP  BY laptime,
          username


该表如下所示:

lap username    laptime
2   Blackvault  1200.000
1   Blackvault  1234.000
3   Elmo        1235.000


我只想显示Blackvault的第二圈和Elmo的唯一一圈。
SQL将需要通用,因为可能有N个赛车手和N个圈。

任何帮助表示赞赏。

最佳答案

如果要获取原始数据行(在MySQL中),则需要获取最佳时间并将其连接到原始数据。这是使用join的方法:

select lt.*
from laptimes lt join
     (select username, min(laptime) as laptime
      from laptimes
      group by username
     ) lu
     on lu.username = lt.nusername and lu.laptime = lt.laptime;


如果不需要id(或其他列),则子查询可能足以满足您的目的。

07-26 09:32