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

标签 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 的行

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

最佳答案

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

关于mysql - 为什么 MySQL 查询不返回最新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21975790/

相关文章:

sql - 数据库中不同锁定方案的影响的详细信息?

java - 在 Java 中将 char[] 转换为 BLOB

php - 如何将日期和user_id插入mysql

mysql - 每个单独的列都应该定义其字符集吗?

php - IF EXISTS UPDATE ELSE INSERT 使用 mysql

Python 序列 id 到 mysql 与文本

php - 如何为我的应用程序创建索引数据库

mysql - 在文件名与表名不同的地方使用 mysqlimport

Php & Mysql,如何从表患者和医疗记录中获取医疗记录的详细信息?

php - 从最后输入的十个值中选择最受欢迎的条目