2017-01-02 21 views
0

MySQLでは、私は各ユーザの最新のデータを1つだけ取得しようとしています。私はcureentlyユーザ名とクエリですべての値を返すテーブルから別個の最新値を取得するクエリ

SELECT DISTINCT username, value, date 
FROM table 
WHERE date >= CURDATE() 
ORDER BY date DESC 

その速度が遅いことです次のクエリを行っています。それを速くし、各ユーザーの最新の値を1つだけ得る方法はありますか?

+0

テーブルの構造を追加する – Dekel

答えて

1

は、各ユーザーの最後の日付を見つけるために、サブクエリでMAX()GROUP BYを行いお役に立てば幸いです。その結果と結合する:

SELECT t1.username, t1.value, t1.date 
FROM table t1 
JOIN (select username, max(date) as maxdate from table 
     group by username) t2 on t1.username = t2.username 
          and t1.date = t2.maxdate 
WHERE t1.date >= CURDATE() 
ORDER BY t1.date DESC 
1

ほとんどの場合、各ユーザー名の最新の日付を探しています。このクエリは

SELECT T.username, T.value, TT.date 
FROM table T 
WHERE T.Date = (SELECT MAX(TT.Date) 
       FROM table TT 
       WHERE TT.user = T.user) 
関連する問題