我有一个table1
,其列id_month
的值为1
,months
的值为6
,并且会将其从6更新为12 。我需要table2
上的此更改效果,以选择id_months
值为1
的所有行,并将months
更改为12
并进行计算{ {1}} + date_start
的新值,并使用新日期更新months
。
table1就是那样
date_end
table2就是那样
id_month | months
1 | 6
2 | 12
谢谢。
答案 0 :(得分:1)
我认为你可以在日期数学中使用字段...
UPDATE table1 SET months = 12 where id_month = 1;
UPDATE table1 AS t1 INNER JOIN table2 AS t2 ON t1.id_month = t2.id_month
SET t2.months = t1.months, t2.date_end = t2.date_start + INTERVAL t1.months MONTH
WHERE t1.id_month = 1;
如果没有,无论如何,这将在一个查询中完成所有....
UPDATE table1 AS t1 INNER JOIN table2 AS t2 ON t1.id_month = t2.id_month
SET t1.months = 12
, t2.months = 12
, t2.date_end = t2.date_start + INTERVAL 12 MONTH
WHERE t1.id_month = 1;
旁注:这就是为什么我试图避免存储冗余数据的原因,除非从性能角度来看这样做成本很高;需要保持派生数据的一致性。