-1

我有一个具有 value=和value =的table1列,并将其从 6 更新到 12。我需要这个更改效果来选择所有具有 value=的行并更改为并进行计算+ 新值并更新为新日期。id_month1months6table2id_months1months12date_startmonthsdate_end

像这样的表1

id_month | months
1        | 6
2        | 12

像这样的表2

id | id_month | months | date_start  | date_end
1  | 1        | 6      | 2016-01-01  | 2016-07-01
2  | 1        | 6      | 2016-03-01  | 2016-09-01
3  | 1        | 6      | 2016-06-01  | 2016-12-01
4  | 1        | 6      | 2016-08-01  | 2017-02-01

谢谢你。

4

1 回答 1

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;

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

于 2016-05-20T18:38:17.717 回答