2010-03-27 43 views
25

he encontrado algo que funciona con la actualización de un campo a la aquí: http://www.karlrixon.co.uk/articles/sql/update-multiple-rows-with-different-values-and-a-single-sql-query/¿Actualizar varias filas con una consulta?

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) 

Mi pregunta es cómo actualizar más de un campo? Tales como:

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) 

Lo que no funciona, por supuesto. Intenté algunas otras combinaciones y fallé. ¿Alguna idea? ¡Gracias!

Respuesta

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

Ha intentado algo como lo siguiente. Puede tener múltiples instrucciones "SET" una para cada columna.

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) 
Cuestiones relacionadas