问题描述
问题:需要根据多个条件批量更新,不符合条件的数据保留原有值
解决方案:
方案:符合where条件的所有数据,都会使用case when枚举完。若不符合条件的数据,需要保留原有值,则在else后面加上列名,否则字段会被更新为null
UPDATE USER SET remark = CASE
WHEN sex = '男' AND age >=22 THEN '到达法定结婚年龄'
WHEN sex = '女' AND age >=20 THEN '到达法定结婚年龄'
WHEN sex = '男' AND age <22 THEN '未到达法定结婚年龄'
WHEN sex = '女' AND age <20 THEN '未到达法定结婚年龄'
END ,
NAME = CASE
WHEN id =1 THEN 'zhang san'
WHEN id=4 THEN 'li si'
ELSE NAME
END
WHERE id <5;