Uważam, że możesz pominąć aktualizowanie kolumn „niepotrzebnych”, dostosowując inne odpowiedzi w następujący sposób:
update table set
columnx = (case when condition1 then 25 end),
columny = (case when condition2 then 25 end)
Jak rozumiem, zaktualizuje się tylko wtedy, gdy warunek zostanie spełniony.
Po przeczytaniu wszystkich komentarzy jest to najbardziej wydajne:
Update table set ColumnX = 25 where Condition1
Update table set ColumnY = 25 where Condition1
Przykładowa tabela:
CREATE TABLE [dbo].[tblTest](
[ColX] [int] NULL,
[ColY] [int] NULL,
[ColConditional] [bit] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
Przykładowe dane:
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)
Teraz zakładam, że możesz napisać warunek, który obsługuje wartości null. Na przykład zakładam, że napisałeś taki warunek, który ocenia jako True, False lub Null. Jeśli potrzebujesz pomocy, daj mi znać, a zrobię co w mojej mocy.
Teraz uruchomienie tych dwóch wierszy kodu powoduje zmianę X na 25 wtedy i tylko wtedy, gdy ColConditional ma wartość True (1) i Y na 25 wtedy i tylko wtedy, gdy ColConditional ma wartość False (0)
Update tblTest set ColX = 25 where ColConditional = 1
Update tblTest set ColY = 25 where ColConditional = 0
PS Przypadku zerowym nigdy nie wspomniano w pierwotnym pytaniu ani w jakichkolwiek aktualizacjach pytania, ale jak widać, ta bardzo prosta odpowiedź i tak je obsługuje.