我有一个像这样的SQL字段:
FIELD_A
cat
dog
bird
mole
dog
我想要UPDATE
显然,SQL UPDATE
语句一次只允许一个SET
条件。
如何编写查询以一次完成上述操作?
答案 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');