yo creo que se puede omitir la actualización de las columnas "no deseados" mediante el ajuste de las otras respuestas de la siguiente manera:
update table set columnx = (case when condition1 then 25 end), columny = (case when condition2 then 25 end)
Como yo lo entiendo, esto actualizará sólo cuando se cumple la condición.
Después de leer todos los comentarios, este es el más eficiente:
Update table set ColumnX = 25 where Condition1 Update table set ColumnY = 25 where Condition1
tabla muestra:
CREATE TABLE [dbo].[tblTest]( [ColX] [int] NULL, [ColY] [int] NULL, [ColConditional] [bit] NULL, [id] [int] IDENTITY(1,1) NOT NULL ) ON [PRIMARY]
datos de ejemplo:
Insert into tblTest (ColX, ColY, ColConditional) values (null, null, 0) Insert into tblTest (ColX, ColY, ColConditional) values (null, null, 0) Insert into tblTest (ColX, ColY, ColConditional) values (null, null, 1) Insert into tblTest (ColX, ColY, ColConditional) values (null, null, 1) Insert into tblTest (ColX, ColY, ColConditional) values (1, null, null) Insert into tblTest (ColX, ColY, ColConditional) values (2, null, null) Insert into tblTest (ColX, ColY, ColConditional) values (null, 1, null) Insert into tblTest (ColX, ColY, ColConditional) values (null, 2, null)
Ahora asuma que puede escribir una condicional que maneja nulos. Para mi ejemplo, supongo que ha escrito un condicional tal que evalúe como verdadero, falso o nulo. Si necesita ayuda con esto, avíseme y haré mi mejor esfuerzo.
Ahora la ejecución de estas dos líneas de código hace de hecho el cambio X a 25 si y sólo si ColConditional es verdadero (1) e Y a 25 si y sólo si ColConditional es Falso (0)
Update tblTest set ColX = 25 where ColConditional = 1 Update tblTest set ColY = 25 where ColConditional = 0
P.S. El caso nulo nunca se mencionó en la pregunta original ni en ninguna actualización de la pregunta, pero como puede ver, esta respuesta simple los maneja de todos modos.
Suponiendo que todo en la misma tabla, sí.Siempre puede ejecutarlo en una transacción y revertirlo por error para verlo usted mismo. –
No estoy seguro de lo que quieres decir. He intentado poner un condicional para la columna, pero no funciona. Funciona para una declaración de selección, pero no para una declaración de actualización. (Seleccione (caso (condición) cuando sea verdadero, luego columnx else) de myTable ... la actualización no funciona, y puedo ver por qué. No lo hace. Parece una manera de hacer que funcione. – pqsk