2010-03-27 11 views
25

J'ai trouvé quelque chose qui fonctionne avec la mise à jour d'un champ à ici: http://www.karlrixon.co.uk/articles/sql/update-multiple-rows-with-different-values-and-a-single-sql-query/Mettre à jour plusieurs lignes avec une requête?

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) 

Ma question est de savoir comment mettre à jour plus d'un champ? Tels que:

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) 

Qui ne fonctionne pas bien sûr. J'ai essayé quelques autres combinaisons et j'ai échoué. Une idée? Merci!

Répondre

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

Avez-vous essayé quelque chose comme ci-dessous. Vous pouvez avoir plusieurs instructions "SET" pour chaque colonne.

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) 
Questions connexes