我遇到了问题而我没有解决方案。
我有嵌入式系统(具有独特的site_id:s)向MYSQL服务器报告具有一定周期的温度。 有时外部温度T00已损坏(我将手动检测),在这种情况下,我想将site_id 1中的T00替换为site_id 2中的T00。
我想通过查看calculated_time_stamp来查找我能找到的最接近的温度。在下一个或前23分钟内,site_id 2始终存在有效温度。我想在当时典型的5000条记录中这样做。
如果我选择site_id 1和2,输出将如下所示:
Site_id calculated_time_stamp T00 T01 T02
1 2017-02-12 21:00:00 25 32.0 28.2
2 2017-02-12 21:15:00 2.3 31.0 29.1
1 2017-02-12 21:23:43 25 32.3 28.0
2 2017-02-12 21:38:42 2.4 33.3 28.1
在我执行一些我无法自己解决的SQL交换魔法后,我希望它看起来像这样:
Site_id calculated_time_stamp T00 T01 T02
1 2017-02-12 21:00:00 2.3 32.0 28.2
2 2017-02-12 21:15:00 2.3 31.0 29.1
1 2017-02-12 21:23:43 2.4 32.3 28.0
2 2017-02-12 21:38:42 2.4 33.3 28.1
有什么想法吗?
答案 0 :(得分:0)
UPDATE table_name a
SET a.t00 =
(SELECT b.t00 FROM table_name b
WHERE TIME_TO_SEC(timediff(a. calculated_time_stamp, b. calculated_time_stamp)) < 23*60
AND b.site_id=2)
WHERE a.site_id=1
尝试使用类似的东西