我得到了具体的查询:
SELECT *
FROM stats
WHERE mod_name = 'module'
GROUP BY domain
ORDER BY addition_date DESC
我想要检索每个域的最新值。我知道有一个域x.com值,日期为2014-02-19。
但是,此查询会返回包含日期的行:2014-01-06
这是一个非常简单的查询...为什么它不按域分组并只采用最新值? 我错过了什么吗?
答案 0 :(得分:2)
order by
发生在 group by
之后的。这就是您的查询不起作用的原因。这是获得你想要的东西的方法:
SELECT s.*
FROM stats s
WHERE mod_name = 'module' and
not exists (select 1
from stats s2
where s2.mod_name = s.mod_name and
s2.addition_date > s.addition_date
)
ORDER BY addition_date DESC;
要获得最佳效果,请在stats(mod_name, addition_date)
上创建索引。