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

Eig*_*ght 2 mysql sql group-by sql-order-by sql-limit

在我的表中,我有按timestamp. 我想返回一个具有最高timestamp.

这有效:

SELECT max(`timestamp`) FROM `messages`
Run Code Online (Sandbox Code Playgroud)

但是,它只返回timestamp值。所以我也尝试选择该message值:

SELECT max(`timestamp`), `message` FROM `messages`
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

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
Run Code Online (Sandbox Code Playgroud)

所以我添加了一个 GROUP BY:

SELECT max(`timestamp`), `message` FROM `messages`
GROUP BY `message`
Run Code Online (Sandbox Code Playgroud)

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

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

GMB*_*GMB 5

我想返回具有最高时间戳的单个条目。

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

select * from messages order by timestamp desc limit 1
Run Code Online (Sandbox Code Playgroud)