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

为什么MySQL查询不返回最新的行,mysql,sql,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的行 这是一个非常简单的查询。。。为什么不按域分组,只取最新值? 我遗漏了什么吗?排序依据发生在分组依据之后。这就是为什么您的查询不起作用。以下是一种获得您想要的东西

我有具体的疑问:

SELECT * 
FROM stats 
WHERE mod_name = 'module' 
GROUP BY domain 
ORDER BY addition_date DESC
我想检索每个域的最新值。我知道有一个域名x.com的值,日期为2014-02-19

但是,此查询返回日期为2014-01-06的行

这是一个非常简单的查询。。。为什么不按域分组,只取最新值? 我遗漏了什么吗?

排序依据发生在分组依据之后。这就是为什么您的查询不起作用。以下是一种获得您想要的东西的方法:

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;

为了获得最佳性能,请在statsmod_名称、addition_日期上创建一个索引。

这就是我的结果完全随机的原因。泰!我创建了一个稍微不同的查询,不存在。这不是更快吗?:SELECT*FROM SELECT*FROM stats,其中mod_name='module'ORDER BY addition_date DESC as ab GROUP BY domain ORDER BY addition_date DESC您使用的GROUP BY extension明确记录为无效:。另外,查询不存在,适当的索引应该更快,因为它不需要对原始数据进行排序。非常感谢您的帮助和解释!