如何更新每天具有最大值的行?

时间:2017-08-28 22:39:20

标签: mysql sql-update max

我有一个MySQL表'weather_data',其中包含以下字段:

  • ID
  • 温度
  • 时间
  • MAX_TEMPERATURE

每15分钟更新一次。 使用以下MySQL命令,我可以看到每天的最高温度值:

SELECT MAX(temperature) FROM 'weather_data' GROUP BY DAY(time)

我想要的是一个MySQL命令,它遍历我的所有数据,找到每天的最高温度,并在每一行上用当时的温度更新max_temperature字段。 因此,如果我有七天的数据,我想用max_temperature更新7行。

这可能吗?

1 个答案:

答案 0 :(得分:0)

首先,我认为你应该在两个单独的表中存储频繁的临时和最大温度。

其次,如果你仍然喜欢你的架构,你可以这样做:

UPDATE weather_data
INNER JOIN  (
    SELECT MAX(temperature) as temperature, DAY(time) as date 
    FROM weather_data GROUP BY DAY(time)
) max_temp 
ON max_temp.date = DAY(time)
SET weather_data.max_temperature = max_temp.temperature

修改

如果您想使用两种表格方法,我建议您使用以下表格:

<强> weather_data:

  • ID
  • 温度
  • 时间

<强> max_daily_temperature:

  • ID
  • MAX_TEMPERATURE
  • 日期

至于插入:我认为你已经处理过weather_data,但是对于max_daily_temperature,它会是这样的:

INSERT INTO max_daily_temperature 
SELECT DATE(time), MAX(temperature) 
FROM weather_data 
WHERE DATE(time) = '2017-08-30'

和更新:

UPDATE max_daily_temperature 
SET max_temperature = (
    SELECT MAX(temperature)
    FROM weather_data 
    WHERE DATE(time) = '2017-08-30'
)
WHERE date = '2017-08-30'

如果这是您所期待的,请不要忘记将答案标记为解决方案。