Digamos que tengo una tabla tbl con columnas id y título. necesito cambiar todos los valores de la columna título:¿Es posible realizar múltiples actualizaciones con una sola instrucción UPDATE SQL?
- de 'a1' a 'a1',
- de 'a.1' a 'a1',
- de 'b-1 'a' b1 ',
- de' b.1 'a' b1 '.
En este momento, estoy realizando dos sentencias UPDATE:
UPDATE tbl SET title='a1' WHERE title IN ('a-1', 'a.1')
UPDATE tbl SET title='b1' WHERE title IN ('b-1', 'b.1')
Esto no es en absoluto un problema, si la tabla es pequeña, y la declaración única se completa en menos de un segundo y solo necesitas unas pocas sentencias para ejecutar.
Probablemente lo haya adivinado: tengo que encargarme de una gran tabla (una afirmación se completa en aproximadamente 90 segundos), y tengo un gran número de actualizaciones para realizar.
Entonces, ¿es posible combinar las actualizaciones para que solo analice la tabla una vez? O tal vez, hay una mejor manera de tratar en una situación como esta.
EDITAR: Tenga en cuenta que los datos reales con los que estoy trabajando y los cambios en los datos que tengo que realizar no son tan simples: las cadenas son más largas y no siguen ningún patrón (son datos de usuario) , por lo que no se pueden hacer suposiciones, puede ser cualquier cosa).
Por lo tanto, inferir de su comentario EDITAR, las cadenas en sí pueden ser diferentes, pero la actualización que está intentando ¿SIGUE un patrón? Si es así, ¿qué es? Si nada tiene un patrón, entonces no hay solución, tiene que codificar cada actualización idiosincrásica individualmente –
Tengo una lista de valores * correctos *, y tengo una lista claramente especificada de valores * incorrectos (y qué valor incorrecto debe ser cambiado a qué valor correcto). Entonces sí, las actualizaciones sí tienen un patrón. En resumen: cada actualización cambia UN valor, pero solo si el valor anterior está EN la lista de valores especificada. – Paulius