mySQL SUM 和排序

mySQL SUM and Ordering

我们有一个 table 每天插入一行并用数据更新它。

我有以下查询来获取来自 table 的总点击量:

SELECT SUM(`total_clicks`) AS clicks, `last_updated` FROM `reporting` WHERE `unique_id` = 'xH7' ORDER BY `last_updated` DESC

从数据库中提取此信息时,它提取的是正确的总点击次数,但 last_updated 字段来自第一行(昨天),而不是今天插入的新行。

如何获取最新的 last_updated 字段?

如果你每天只有一行,那么你不需要sum()。以下是否符合您的要求?

SELECT `total_clicks` AS clicks, `last_updated`
FROM `reporting`
WHERE `unique_id` = 'xH7'
ORDER BY `last_updated` DESC
LIMIT 1;

您的查询是一个聚合查询,将 table 中的所有点击相加。因为它 returns 只有一行,所以 order by 没有做任何事情。

如果你想要最近的日期,使用MAX到select它:

SELECT SUM(total_clicks) as clicks, MAX(last_updated) AS last_updated
FROM reporting
WHERE unique_id = 'xH7'

您的版本的问题是 ORDER BY 在 聚合之后发生 ,并且聚合 selects 来自 [=] 中任意行的非聚合列20=].