为什么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明确记录为无效:。另外,查询不存在,适当的索引应该更快,因为它不需要对原始数据进行排序。非常感谢您的帮助和解释!