다음과 같이 다른 답변을 조정하여 "원하지 않는"열 업데이트를 생략 할 수 있다고 생각합니다.
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)
이제 널을 처리하는 조건부를 작성할 수 있다고 가정합니다. 내 예를 들어, True, False 또는 Null로 평가되는 조건을 작성했다고 가정합니다. 도움이 필요한 경우 알려 주시면 최선을 다하겠습니다.
이제이 두 줄의 코드를 실행하면 ColConditional이 True (1) 인 경우에만 X가 25로 변경되고 ColConditional이 False (0) 인 경우에만 Y가 25로 변경됩니다.
Update tblTest set ColX = 25 where ColConditional = 1
Update tblTest set ColY = 25 where ColConditional = 0
추신 : null 케이스는 원래 질문이나 질문에 대한 업데이트에서 언급되지 않았지만 보시 다시피이 매우 간단한 대답은 어쨌든 그들을 처리합니다.