代码之家  ›  专栏  ›  技术社区  ›  datasn.io

用一个查询更新多行?

  •  25
  • datasn.io  · 技术社区  · 16 年前

    我在这里发现了一些可以更新一个字段的东西: 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)
    

    当然不行。尝试了一些其他组合,但失败了。知道吗?谢谢!

    2 回复  |  直到 9 年前
        1
  •  41
  •   Ayman Hourieh    16 年前
    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)
    
        2
  •  7
  •   Ashish Gupta Shiva    16 年前

    你试过下面这样的东西吗?您可以有多个“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)