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=].
我们有一个 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=].