2016-03-29 17 views
1

私はこのようなテーブルがある:セレクト・レコードの列のMIN値とし、別の列の特定の値を持つ

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 username – 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を計算することによって行うことができます。

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 done – Matt