查询从表中获取不同的最新值

时间:2017-01-02 12:12:42

标签: mysql sql

在MySQL中,我试图获取每个用户的唯一一个最新数据。我正在做下面的查询

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

它按用户名返回所有值,查询速度慢。有没有办法让它更快,只获得每个用户的一个最新值?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

在子查询中执行GROUP BY MAX()以查找每个用户的上次日期。加入这个结果:

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