在一个UPDATE中SQL多个SET?

Ben*_*Ben 4 sql sql-update

我有一个SQL字段,如下所示:

FIELD_A  
  cat     
  dog 
  bird
  mole
  dog
Run Code Online (Sandbox Code Playgroud)

我想要 UPDATE

  • 所有的都要哈巴狗
  • 所有的鸟儿猫头鹰
  • 所有安哥拉.

显然,SQL UPDATE语句一次只允许一个SET条件.

如何编写查询以一次完成上述操作?

Jon*_*ler 11

UPDATE AnonymousTable
   SET Field_A = (CASE Field_A
                  WHEN 'dog'  THEN 'pug'
                  WHEN 'bird' THEN 'owl'
                  WHEN 'cat'  THEN 'angora'
                  ELSE Field_A END)
 WHERE Field_A IN ('dog', 'bird', 'cat'); 
Run Code Online (Sandbox Code Playgroud)

使用WHERE子句,CASE表达式中的ELSE子句是可选的或冗余的 - 但包括ELSE可以提供可靠性.其中一个更严重的错误是不要覆盖"以上都没有"的替代方案,并发现未提及的所有内容都设置为NULL.