为什么MySQL查询不返回最新的行

时间:2014-02-23 22:54:29

标签: mysql sql

我得到了具体的查询:

SELECT * 
FROM stats 
WHERE mod_name = 'module' 
GROUP BY domain 
ORDER BY addition_date DESC

我想要检索每个域的最新值。我知道有一个域x.com值,日期为2014-02-19。

但是,此查询会返回包含日期的行:2014-01-06

这是一个非常简单的查询...为什么它不按域分组并只采用最新值? 我错过了什么吗?

1 个答案:

答案 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)上创建索引。