MySQLでは、私は各ユーザの最新のデータを1つだけ取得しようとしています。私はcureentlyユーザ名とクエリですべての値を返すテーブルから別個の最新値を取得するクエリ
SELECT DISTINCT username, value, date
FROM table
WHERE date >= CURDATE()
ORDER BY date DESC
その速度が遅いことです次のクエリを行っています。それを速くし、各ユーザーの最新の値を1つだけ得る方法はありますか?
MySQLでは、私は各ユーザの最新のデータを1つだけ取得しようとしています。私はcureentlyユーザ名とクエリですべての値を返すテーブルから別個の最新値を取得するクエリ
SELECT DISTINCT username, value, date
FROM table
WHERE date >= CURDATE()
ORDER BY date DESC
その速度が遅いことです次のクエリを行っています。それを速くし、各ユーザーの最新の値を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
ほとんどの場合、各ユーザー名の最新の日付を探しています。このクエリは
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)
テーブルの構造を追加する – Dekel