在一个UPDATE中SQL多个SET?

时间:2011-03-03 08:16:08

标签: sql sql-update

我有一个像这样的SQL字段:

FIELD_A  
  cat     
  dog 
  bird
  mole
  dog

我想要UPDATE

  • 所有 pug
  • 所有 owl
  • 所有 cat angora

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

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

3 个答案:

答案 0 :(得分: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'); 

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

答案 1 :(得分:3)

使用CASE子句可以完成此任务。这里有一个例子

http://www.java2s.com/Code/SQLServer/Select-Query/UseCASEintheUPDATEstatement.htm

答案 2 :(得分:2)

UPDATE table_a
   SET field_a =
          DECODE (field_a,  'dog', 'pug',  'bird', 'owl',  'cat', 'angora')
 WHERE field_a IN ('dog', 'bird', 'cat');