Saya yakin Anda dapat menghilangkan pembaruan kolom "tidak diinginkan" dengan menyesuaikan jawaban lain sebagai berikut:
update table set
columnx = (case when condition1 then 25 end),
columny = (case when condition2 then 25 end)
Seperti yang saya pahami, ini akan diperbarui hanya jika kondisi terpenuhi.
Setelah membaca semua komentar, ini yang paling efisien:
Update table set ColumnX = 25 where Condition1
Update table set ColumnY = 25 where Condition1
Tabel Sampel:
CREATE TABLE [dbo].[tblTest](
[ColX] [int] NULL,
[ColY] [int] NULL,
[ColConditional] [bit] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
Data Sampel:
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)
Sekarang saya berasumsi Anda dapat menulis kondisi yang menangani nulls. Untuk contoh saya, saya berasumsi bahwa Anda telah menulis kondisi yang bernilai True, False atau Null. Jika Anda membutuhkan bantuan dalam hal ini, beri tahu saya dan saya akan melakukan yang terbaik.
Sekarang menjalankan dua baris kode ini sebenarnya mengubah X menjadi 25 jika dan hanya jika ColConditional True (1) dan Y menjadi 25 jika dan hanya jika ColConditional False (0)
Update tblTest set ColX = 25 where ColConditional = 1
Update tblTest set ColY = 25 where ColConditional = 0
PS Kasus nol tidak pernah disebutkan dalam pertanyaan asli atau pembaruan apa pun pada pertanyaan, tetapi seperti yang Anda lihat, jawaban yang sangat sederhana ini tetap menangani mereka.