2015-05-24 131 views
0

我在嘗試從mySQL表中檢索數據時遇到問題。該表包含所有參與者在賽事中的所有單圈時間。該表爲每場比賽有多個條目。我想選擇每個參與者的最佳圈速時間,但我不確定如何擺脫每個參與者的副本。刪除SQL結果中的重複項

我試過以下聲明。

SELECT * 
FROM laptimes 
GROUP BY laptime, 
      username 

表看起來是這樣的:

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

我想只顯示Blackvault和Elmo的只有一圈一圈的2。 SQL需要是通用的,因爲可能有N個賽車手和N個圈數。

任何幫助表示讚賞。

+0

[SQL組通過用順序按] [1] [1]:http://stackoverflow.com/questions/27983/sql-group-by-with-an-order-by 這可能有幫助。 – F4b

回答

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(或其他列),然後將子查詢可能足以滿足您的目的。

+0

Best laptime意思是'min(laptime)' – RubahMalam

+0

感謝您的快速響應。這似乎是布萊克沃特最慢的時間而不是他最快的時間。是否需要添加由desc引起的訂單? – Blackvault

+0

@Blackvault。 。 。不,'max()'只需要用'min()'代替。 –

1

如果您需要選擇只有best laptime那麼你就需要這樣的:

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

我想你想從羣組中刪除laptime。 – Tim3880

+0

@ Tim3880:是的,你說得對。感謝您的糾正。 – RubahMalam