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

MYSQL: return value associated with highest number with GROUP BY

在我的 table 中,我有按 timestamp 排序的条目。我想要 return 具有最高 timestamp.

的单个条目

这个有效:

SELECT max(`timestamp`) FROM `messages`

然而,它 return 只是 timestamp 值。所以我也尝试 select 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`

然而,这只是结束 returning table 中的每个值。

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

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

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

select * from messages order by timestamp desc limit 1

请尝试以下 mysql 查询。第一个内部查询获得最高数字。在外部查询删除数据重复之后。

SELECT 
 * 
FROM
  (SELECT 
    `timestamp` 
  FROM
    `messages` 
  ORDER BY `timestamp`) 
GROUP BY `timestamp`