MYSQL:根据date/hour将值从一个table转移到另一个
MYSQL: Transfer values from one table to another based on date/hour
我有以下 MYSQL tables:
部分输入table'input':
和部分输出 Table 'output':
date/time 两列都是预先给定的,无法更改。它们是我想用来执行以下操作的 MYSQL 代码的基础:
我想对 同一日期和同一时间 输入 table 的 'total' 列的所有值求和,并将它们放入 'total' 列输出 table,其中 'time' 列与输入 table.
具有 相同的日期和相同的时间
只有 MYSQL 才有可能吗?
或者我也需要 PHP 吗?
输入 table 有大约 400,000 个值。
我开始于:
SELECT SUM(total) FROM input
WHERE date BETWEEN '2019-06-06 00:00:00' AND '2019-06-06 23:59:59'
但是我不知道如何继续。
如有任何帮助,我们将不胜感激。提前致谢:)
获取输入 table 中的总和并加入 UPDATE
语句中的输出 table:
update output o
inner join (
select date_format(date, '%Y%m%d%H') hour, sum(total) total
from input
group by date_format(date, '%Y%m%d%H')
) i on i.hour = date_format(o.date, '%Y%m%d%H')
set o.total = i.total
UPDATE outputtable,
(SELECT Sum(total) SUM,
Year(date) year,
Month(date) month,
Day(date) day,
Hour(date) hour
FROM inputtable
GROUP BY Year(date),
Month(date),
Day(date),
Hour(date)) InputT SET total = InputT.sum WHERE Year(outputtable.date) = InputT.year
AND Month(outputtable.date) = InputT.month
AND Day(outputtable.date) = InputT.day
AND Hour(outputtable.date) = InputT.hour;
我有以下 MYSQL tables:
部分输入table'input':
和部分输出 Table 'output':
date/time 两列都是预先给定的,无法更改。它们是我想用来执行以下操作的 MYSQL 代码的基础: 我想对 同一日期和同一时间 输入 table 的 'total' 列的所有值求和,并将它们放入 'total' 列输出 table,其中 'time' 列与输入 table.
具有 相同的日期和相同的时间只有 MYSQL 才有可能吗? 或者我也需要 PHP 吗? 输入 table 有大约 400,000 个值。
我开始于:
SELECT SUM(total) FROM input
WHERE date BETWEEN '2019-06-06 00:00:00' AND '2019-06-06 23:59:59'
但是我不知道如何继续。
如有任何帮助,我们将不胜感激。提前致谢:)
获取输入 table 中的总和并加入 UPDATE
语句中的输出 table:
update output o
inner join (
select date_format(date, '%Y%m%d%H') hour, sum(total) total
from input
group by date_format(date, '%Y%m%d%H')
) i on i.hour = date_format(o.date, '%Y%m%d%H')
set o.total = i.total
UPDATE outputtable,
(SELECT Sum(total) SUM,
Year(date) year,
Month(date) month,
Day(date) day,
Hour(date) hour
FROM inputtable
GROUP BY Year(date),
Month(date),
Day(date),
Hour(date)) InputT SET total = InputT.sum WHERE Year(outputtable.date) = InputT.year
AND Month(outputtable.date) = InputT.month
AND Day(outputtable.date) = InputT.day
AND Hour(outputtable.date) = InputT.hour;