Mysql UPDATE表上的多行

时间:2016-05-20 18:29:14

标签: mysql sql-update multirow

我有一个table1,其列id_month的值为1months的值为6,并且会将其从6更新为12 。我需要table2上的此更改效果,以选择id_months值为1的所有行,并将months更改为12并进行计算{ {1}} + date_start的新值,并使用新日期更新months

table1就是那样

date_end

table2就是那样

id_month | months
1        | 6
2        | 12

谢谢。

1 个答案:

答案 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;

旁注:这就是为什么我试图避免存储冗余数据的原因,除非从性能角度来看这样做成本很高;需要保持派生数据的一致性。