在我的表中,我有按时间戳
排序的条目。我想返回具有最高时间戳
的单个条目。
这有效:
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/