2016-03-29 90 views
1

我有一個表是這樣的:選擇記錄在一列最小值,並與另一列特定值

username  date  place  time 
paolo  1/1/2001 milan  00:10.20 
marco  1/1/2001 milan  00:11.40 
paolo  1/1/2011 milan  00:12.20 
paolo  1/1/2004 milan  00:10.50 

我想隨着時間的用戶名paolo最低值返回該行:

paolo  1/1/2001 milan  00:10.20 

我這個查詢嘗試:

SELECT username,date,place,MIN(time) as record 
FROM crono 
WHERE username="paolo" 
GROUP BY username,date,place 

但它並沒有給我想要的結果。

+0

GROUP BY用戶名 – Sevle

+0

提示:將日期和時間存儲爲單個實體,並使用正確的數據類型。 – Strawberry

回答

1

使用order bylimit

SELECT c.* 
FROM crono c 
WHERE username = 'paolo' 
ORDER BY time 
LIMIT 1; 

當使用GROUP BY,從來沒有在SELECT不屬於參數的聚合函數和不是在GROUP BY列 - 除非你真的,真的,真的知道你在做什麼。雖然這不適用於您的查詢,但這是解決方案的常見嘗試。 Y

0

這可以使用Derived table來計算MIN(time)然後SELECT它從Derived table的結果。

SELECT username, date, place, record 
FROM 
(SELECT username, MIN(time) AS record 
FROM crono c 
GROUP BY username) recordselect 
INNER JOIN crono c on recordselect.username= c.username 
+0

@TobySpeight完成 – Matt

相關問題