Tôi tin rằng bạn có thể bỏ qua việc cập nhật các cột "không mong muốn" bằng cách điều chỉnh các câu trả lời khác như sau:
update table set
columnx = (case when condition1 then 25 end),
columny = (case when condition2 then 25 end)
Theo tôi hiểu, điều này sẽ chỉ cập nhật khi điều kiện được đáp ứng.
Sau khi đọc tất cả các bình luận, đây là cách hiệu quả nhất:
Update table set ColumnX = 25 where Condition1
Update table set ColumnY = 25 where Condition1
Bảng mẫu:
CREATE TABLE [dbo].[tblTest](
[ColX] [int] NULL,
[ColY] [int] NULL,
[ColConditional] [bit] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
Dữ liệu mẫu:
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)
Bây giờ tôi giả sử bạn có thể viết một điều kiện xử lý các giá trị rỗng. Đối với ví dụ của tôi, tôi giả sử bạn đã viết một điều kiện như vậy để đánh giá là True, False hoặc Null. Nếu bạn cần trợ giúp về vấn đề này, hãy cho tôi biết và tôi sẽ cố gắng hết sức.
Bây giờ chạy hai dòng mã này, infact sẽ thay đổi X thành 25 nếu và chỉ khi Điều kiện màu là Đúng (1) và Y thành 25 nếu và chỉ khi Điều kiện màu là Sai (0)
Update tblTest set ColX = 25 where ColConditional = 1
Update tblTest set ColY = 25 where ColConditional = 0
PS Trường hợp rỗng không bao giờ được đề cập trong câu hỏi ban đầu hoặc bất kỳ cập nhật nào cho câu hỏi, nhưng như bạn có thể thấy, câu trả lời rất đơn giản này vẫn xử lý chúng.