SQL中如何在UPDATE表命令中使用IF语句按条件更新多个字段
实现SQL(Oracle环境)
你可以直接通过CASE WHEN条件表达式完成单条UPDATE语句同步更新两个字段,写法如下:
UPDATE report SET bill_amount = CASE category_code WHEN 1 THEN units_consumed * 0.90 WHEN 2 THEN units_consumed * 2.40 WHEN 3 THEN units_consumed * 0.50 ELSE bill_amount -- 非指定分类保留原有账单金额 END, remarks = CASE category_code WHEN 1 THEN 'DOMESTIC' WHEN 2 THEN 'COMMERCIAL' WHEN 3 THEN 'FARMERS' ELSE remarks -- 非指定分类保留原有备注 END;
可选优化
如果仅需要更新category_code为1/2/3的记录,减少不必要的全表操作,可以在语句末尾增加过滤条件:
WHERE category_code IN (1,2,3);
如果需要处理units_consumed为空的异常场景,可给计算结果设置默认值,示例:
bill_amount = NVL(CASE category_code WHEN 1 THEN units_consumed * 0.90 WHEN 2 THEN units_consumed * 2.40 WHEN 3 THEN units_consumed * 0.50 END, 0)
内容的提问来源于stack exchange,提问作者Gyanesh
相关产品推荐
相关产品推荐

