在MySQL中,我试图获取每个用户的唯一一个最新数据。我正在做下面的查询
SELECT DISTINCT username, value, date
FROM table
WHERE date >= CURDATE()
ORDER BY date DESC
它按用户名返回所有值,查询速度慢。有没有办法让它更快,只获得每个用户的一个最新值?
答案 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