我有一個專案管理表,其中包含1000個任務/記錄,每個任務/記錄都有一個動態的starting_date
和ending_date
列。這些日期的值是透過取得一個靜態的項目「上線」日期(例如2022-10-01
),然後減去每個記錄的task_offset_days
值(例如-211) ,從而得到starting_date
的值。結束日期透過一個days_to_complete
列計算,該列具有例如60
天的值,如果將其加到starting_date
上,就得到了最終的ending_date
。
範例:上線日期= 2022-10-01
,偏移量-211
天,得到starting_date = '2022-03-04'
,再加上days_offset
的值60
,得到ending_date = 2022-05-03
。
這裡的問題是:
我想將這1000筆記錄複製到另一個表中,並在此過程中根據另一個上線日期更新starting_date
和ending_date
的值。考慮到我要複製和編輯1000筆記錄,我該如何以最高效的方式做到這一點?
目前的複製查詢:
@live_date = '2022-10-01'; // 上线日期 INSERT INTO `new_task_table` ( `property_id`, // 唯一标识符,在原始表中不存在 `status`, `task_desc`, `phase`, `workstream`, `task_level`, `task_owner_group`, `start_date`, // = 上线日期 - 偏移量 `end_date`, // = 开始日期 + 完成天数 `offset_days`, // 例如 -211(注意:可以低于/高于零:-211或120) `days_to_complete`, // 例如 60 `created_at` ) SELECT '31', `status`, `task_desc`, `phase`, `workstream`, `task_level`, `task_owner_group`, `start_date`, `end_date`, `offset_days`, `days_to_complete`, '2022-01-01 00:00:00' // 查询执行的日期 FROM `old_task_table`;
這可能比你想像的簡單。你只需將值傳遞給
SELECT