从SQL结果

时间:2015-05-24 17:34:18

标签: mysql

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

我尝试过以下声明。

SELECT *
FROM   laptimes
GROUP  BY laptime,
          username 

表格如下:

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

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

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

如果您想获取原始数据行(在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(或其他列),则子查询可能足以满足您的目的。

答案 1 :(得分:1)

如果您只需要选择best laptime,那么您需要:

SELECT lap,username, min(laptime) as laptime
FROM laptimes 
GROUP BY username