假设在我的表配置文件中有一个数据字段education,现在我想更新education=“01”,其中早期的education是“BA”,类似的education=“02”,其中education是“MD”
所以我可以这样做
update profile set education='01' where education='BA';
update profile set education='02' where education='MD';
我的问题是我能用一个命令完成这个任务吗
update profile set education='01' where education='BA' and set education='02' where education='MD';
这个语法是错误的,请告诉我这是可能的,怎么可能?
如果不可能的话,也请让我知道。。。
最佳答案
您可以在CASE
子句中使用SET
语句,但要注意包含一个将列设置为其当前值的ELSE
大小写,否则,两个大小写不匹配的行将被设置为NULL
。
UPDATE profile
SET education =
CASE
WHEN education = 'BA' THEN '01'
WHEN education = 'MD' THEN '02'
/* MUST include an ELSE case to set to current value,
otherwise the non-matching will be NULLed! */
ELSE education
END