Ich glaube, dass Sie die Aktualisierung der "unerwünschten" Spalten unterlassen können, indem Sie die anderen Antworten wie folgt anpassen:
update table set
columnx = (case when condition1 then 25 end),
columny = (case when condition2 then 25 end)
Soweit ich weiß, wird dies nur aktualisiert, wenn die Bedingung erfüllt ist.
Nachdem Sie alle Kommentare gelesen haben, ist dies am effizientesten:
Update table set ColumnX = 25 where Condition1
Update table set ColumnY = 25 where Condition1
Beispieltabelle:
CREATE TABLE [dbo].[tblTest](
[ColX] [int] NULL,
[ColY] [int] NULL,
[ColConditional] [bit] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
Beispieldaten:
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)
Nun gehe ich davon aus, dass Sie eine Bedingung schreiben können, die Nullen behandelt. In meinem Beispiel gehe ich davon aus, dass Sie eine solche Bedingung geschrieben haben, die True, False oder Null ergibt. Wenn Sie dabei Hilfe benötigen, lassen Sie es mich wissen und ich werde mein Bestes geben.
Wenn Sie nun diese beiden Codezeilen ausführen, ändert sich X genau dann auf 25, wenn ColConditional True (1) und Y auf 25 genau dann, wenn ColConditional False (0) ist.
Update tblTest set ColX = 25 where ColConditional = 1
Update tblTest set ColY = 25 where ColConditional = 0
PS Der Nullfall wurde in der ursprünglichen Frage oder in Aktualisierungen der Frage nie erwähnt, aber wie Sie sehen können, behandelt diese sehr einfache Antwort sie trotzdem.