MYSQL:返回与 GROUP BY 的最高数字关联的值

标签 mysql sql group-by sql-order-by sql-limit

在我的表中,我有按时间戳排序的条目。我想返回具有最高时间戳的单个条目。

这有效:

SELECT max(`timestamp`) FROM `messages`

但是,它仅返回时间戳值。所以我也尝试选择 message 值:

SELECT max(`timestamp`), `message` FROM `messages`

我收到此错误:

In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'database.messages.message'; this is incompatible with sql_mode=only_full_group_by

所以我添加一个 GROUP BY:

SELECT max(`timestamp`), `message` FROM `messages`
GROUP BY `message`

然而,这最终只是返回表中的每个值。

我知道 GROUP BY 应该统一相同的条目,我只是完全不知道为什么我被迫在这种情况下使用它以及如何获取最新的条目而不是所有条目。

最佳答案

I want to return a single entry that has the highest timestamp.

不要聚合。您可以改为排序和限制:

select * from messages order by timestamp desc limit 1

关于MYSQL:返回与 GROUP BY 的最高数字关联的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59681044/

相关文章:

php - 检查mysql结果为空

sql - 我无法在 mysql 错误 150 中创建外键。请帮助

mysql - 通过 SolrJ 索引数据库

mysql - 如何使用 group by 子句选择随机行?

php简单登录脚本白页

java - 使用EntityManager在derby DB中保留实体会产生java.sql.SQLIntegrityConstraintViolationException

python - 在组内联合非集合迭代的有效方法

mysql - 我如何在mysql中编写一个触发器来在插入之前检查重复记录

mysql - 对列中的值进行 Group by 子句

sql - 是否可以将Group by,Having和Sum组合在一起?