2017-01-02 1 views
0

MySQL에서 각 사용자의 유일한 최신 데이터를 얻으려고합니다. 나는 다음과 같은 쿼리를 완수하려고합니다.테이블에서 최신 값을 가져 오는 쿼리

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

사용자 이름별로 모든 값을 반환하고 쿼리가 느려집니다. 더 빨라지고 각 사용자의 최신 가치를 얻는 방법이 있습니까?

+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) 
관련 문제