单SQL语句更新表数据:调整指定周期value及历史记录change_date
单条SQL实现多条件更新解决方案
现有数据表数据
id from_date to_date value change_date 10 jan-2021 dec 2021 100 dec-2021 10 jan-2022 dec 2022 100 dec-2022 10 jan-2023 dec 2023 100 dec-2023
更新需求
- 将
from_date为jan-2023的记录,value字段从100更新为200 - 将
from_date为jan-2021的记录,change_date从dec-2021改为nov-2021;from_date为jan-2022的记录,change_date从dec-2022改为nov-2022
单条UPDATE语句实现
UPDATE your_table_name SET value = CASE WHEN from_date = 'jan-2023' THEN 200 ELSE value END, change_date = CASE WHEN from_date = 'jan-2021' THEN 'nov-2021' WHEN from_date = 'jan-2022' THEN 'nov-2022' ELSE change_date END WHERE from_date IN ('jan-2021', 'jan-2022', 'jan-2023');
语句说明
- 用
CASE WHEN分支判断,针对不同from_date的记录分别更新对应字段 ELSE 原字段值确保不符合条件的记录不会被误修改WHERE子句限定更新范围,避免全表扫描,提升执行效率
内容的提问来源于stack exchange,提问作者Ravindra
相关产品推荐
相关产品推荐

