Я считаю, что вы можете не обновлять «нежелательные» столбцы, настроив другие ответы следующим образом:
update table set
columnx = (case when condition1 then 25 end),
columny = (case when condition2 then 25 end)
Насколько я понимаю, это обновится только при выполнении условия.
После прочтения всех комментариев это наиболее эффективно:
Update table set ColumnX = 25 where Condition1
Update table set ColumnY = 25 where Condition1
Образец таблицы:
CREATE TABLE [dbo].[tblTest](
[ColX] [int] NULL,
[ColY] [int] NULL,
[ColConditional] [bit] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
образец данных:
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)
теперь я предполагаю, что вы можете написать условное выражение, которое обрабатывает значения NULL. В моем примере я предполагаю, что вы написали такое условие, которое оценивается как True, False или Null. Если вам понадобится помощь, дайте мне знать, и я сделаю все возможное.
Теперь выполнение этих двух строк кода фактически изменяет X на 25 тогда и только тогда, когда ColConditional имеет значение True (1), а Y - на 25, если и только если ColConditional имеет значение False (0)
Update tblTest set ColX = 25 where ColConditional = 1
Update tblTest set ColY = 25 where ColConditional = 0
PS Нулевой случай никогда не упоминался в исходном вопросе или каких-либо обновлениях вопроса, но, как вы можете видеть, этот очень простой ответ все равно обрабатывает их.