Diğer yanıtları aşağıdaki gibi ayarlayarak "istenmeyen" sütunların güncellenmesini atlayabileceğinize inanıyorum:
update table set
columnx = (case when condition1 then 25 end),
columny = (case when condition2 then 25 end)
Anladığım kadarıyla, bu yalnızca koşul karşılandığında güncellenecek.
Tüm yorumları okuduktan sonra, bu en verimli olanıdır:
Update table set ColumnX = 25 where Condition1
Update table set ColumnY = 25 where Condition1
Örnek Tablo:
CREATE TABLE [dbo].[tblTest](
[ColX] [int] NULL,
[ColY] [int] NULL,
[ColConditional] [bit] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
Örnek Veriler:
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)
Şimdi, boş değerleri işleyen bir koşul yazabileceğinizi varsayıyorum. Örneğim için, True, False veya Null olarak değerlendirilen böyle bir koşul yazdığınızı varsayıyorum. Bu konuda yardıma ihtiyacın olursa bana haber ver, elimden geleni yapacağım.
Şimdi bu iki kod satırını çalıştırmak, yalnızca ve ancak ColConditional True (1) ise X'i 25'e ve ancak ve ancak ColConditional False (0) ise Y'yi 25'e değiştirir.
Update tblTest set ColX = 25 where ColConditional = 1
Update tblTest set ColY = 25 where ColConditional = 0
Not: Asıl soruda veya soruya yapılan herhangi bir güncellemede boş durumdan hiç bahsedilmemiştir, ancak görebileceğiniz gibi, bu çok basit cevap yine de onları ele alıyor.