ฉันเชื่อว่าคุณสามารถละเว้นการอัปเดตคอลัมน์ "ที่ไม่ต้องการ" ได้โดยปรับคำตอบอื่น ๆ ดังนี้:
update table set
columnx = (case when condition1 then 25 end),
columny = (case when condition2 then 25 end)
ตามที่ฉันเข้าใจแล้วสิ่งนี้จะอัปเดตเมื่อตรงตามเงื่อนไขเท่านั้น
หลังจากอ่านความคิดเห็นทั้งหมดแล้วสิ่งนี้มีประสิทธิภาพมากที่สุด:
Update table set ColumnX = 25 where Condition1
Update table set ColumnY = 25 where Condition1
ตารางตัวอย่าง:
CREATE TABLE [dbo].[tblTest](
[ColX] [int] NULL,
[ColY] [int] NULL,
[ColConditional] [bit] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
ข้อมูลตัวอย่าง:
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)
ตอนนี้ฉันคิดว่าคุณสามารถเขียนเงื่อนไขที่จัดการกับ null ได้ สำหรับตัวอย่างของฉันฉันสมมติว่าคุณได้เขียนเงื่อนไขดังกล่าวที่ประเมินว่าเป็นจริงเท็จหรือเป็นศูนย์ หากคุณต้องการความช่วยเหลือโปรดแจ้งให้เราทราบและเราจะพยายามอย่างเต็มที่
ตอนนี้การเรียกใช้โค้ดสองบรรทัดนี้จะเปลี่ยน infact X เป็น 25 ถ้า ColConditional เป็น True (1) และ Y ถึง 25 ก็ต่อเมื่อ ColConditional เป็นเท็จ (0)
Update tblTest set ColX = 25 where ColConditional = 1
Update tblTest set ColY = 25 where ColConditional = 0
ปล. ไม่เคยกล่าวถึงกรณีว่างในคำถามเดิมหรือการอัปเดตใด ๆ สำหรับคำถาม แต่อย่างที่คุณเห็นคำตอบง่ายๆนี้จะจัดการกับคำถามเหล่านี้