假设在我的表配置文件中有一个数据字段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

10-07 13:51