2010-03-27 114 views
25

我发现了一些与在这里更新一个现场工作:http://www.karlrixon.co.uk/articles/sql/update-multiple-rows-with-different-values-and-a-single-sql-query/使用一个查询更新多行?

UPDATE person 
    SET name = CASE id 
     WHEN 1 THEN 'Jim' 
     WHEN 2 THEN 'Mike' 
     WHEN 3 THEN 'Precious' 
    END 
WHERE id IN (1,2,3) 

我的问题是如何更新多个字段?如:

UPDATE person 
    SET name = CASE, sex = CASE id 
     WHEN 1 THEN 'Jim', 'female' 
     WHEN 2 THEN 'Mike', 'male' 
     WHEN 3 THEN 'Precious', 'male' 
    END 
WHERE id IN (1,2,3) 

当然不行。尝试了几个其他组合,失败了。任何想法?谢谢!

回答

40
UPDATE person 
    SET name = CASE id 
     WHEN 1 THEN 'Jim' 
     WHEN 2 THEN 'Mike' 
     WHEN 3 THEN 'Precious' 
    END, 
    sex = CASE id 
     WHEN 1 THEN 'female' 
     WHEN 2 THEN 'male' 
     WHEN 3 THEN 'male' 
    END 
WHERE id IN (1,2,3) 
7

你试过类似下面的东西。每列可以有多个“SET”语句。

UPDATE person 
    SET name = CASE id 
     WHEN 1 THEN 'Jim' 
     WHEN 2 THEN 'Mike' 
     WHEN 3 THEN 'Precious' 
    END, 
    sex = CASE id 
     WHEN 1 THEN 'female' 
     WHEN 2 THEN 'male' 
     WHEN 3 THEN 'male' 
    END 
WHERE id IN (1,2,3)