2017-01-02 74 views
0

在MySQL中,我試圖獲取每個用戶唯一的最新數據。我正在做以下查詢查詢從表中獲取不同的最新值

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

它通過用戶名和查詢返回所有值慢。有什麼辦法讓它更快,並且只能獲得每個用戶的最新價值?

+0

添加您的表的結構 – Dekel

回答

1

做一個GROUP BYMAX()在一個子查詢找到每個用戶的最後日期。與結果加入:

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) 
相關問題