【问题标题】:MYSQL: Transfer values from one table to another based on date/hourMYSQL:根据日期/小时将值从一个表传输到另一个表
【发布时间】:2019-11-23 07:41:00
【问题描述】:

我有以下 MYSQL 表:

输入表'input'的一部分:

以及输出表“输出”的一部分:

两个日期/时间列都是预先给定的,不能更改。它们是我想用来执行以下操作的 MYSQL 代码的基础: 我想从 同一日期和同一小时 对输入表的“总计”列中的所有值求和,并将它们放入输出表的“总计”列中,其中“时间”列具有 与输入表中的相同日期和相同时间。

这只能使用 MYSQL 吗? 还是我也需要 PHP? 输入表有大约 400,000 个值。

我开始:

SELECT SUM(total) FROM input
WHERE date BETWEEN '2019-06-06 00:00:00' AND '2019-06-06 23:59:59'

但我不知道如何继续。

任何帮助将不胜感激。在此先感谢:)

【问题讨论】:

  • 您的输入和输出日期不匹配...您应该根据您的数据样本提供明确的预期结果..(您应该避免发布图像,并且您应该将数据样本作为表格文本发布)
  • @scaisEdge 图片只显示了表格的一部分。在你看到的那些之后,它会持续很多天。这就是为什么我需要比较日期和时间。
  • ...我们只能通过您发布的元素来理解您的问题..如果问题不清楚..很难找到解决方案..

标签: mysql date time transfer


【解决方案1】:

获取输入表中的总和并在UPDATE语句中加入输出表:

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

【讨论】:

  • 哇。快速回答并立即工作!非常感谢。我不知道内部联接可以用于此。
【解决方案2】:
 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多