mySQL SUM和Ordering

时间:2015-02-20 00:10:44

标签: php mysql sql select

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

我有以下查询来获取表中的总点击次数:

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

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

如何获取最新的last_updated字段?

2 个答案:

答案 0 :(得分:2)

如果您想要最近的日期,请使用MAX选择它:

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

您的版本存在的问题是{<1}}在聚合后发生,而聚合会从表格中的任意行中选择非聚合列。

答案 1 :(得分:1)

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

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

您的查询是一个汇总查询,它会累加表格中的所有点击次数。因为它只返回一行,order by没有做任何事情。