2013-03-07 22 views
0

我目前有一个查询,如果两个值使用INNER JOIN在两个不同的表中匹配,则将字段的值设置为'1'。它目前是这样的:我可以使用IF ... ELSE语句来设置字段吗? (T-SQL)

UPDATE [ARCSEQP] 
SET [isKid] = 1 
FROM [ARCSITE] 
INNER JOIN [ARCSEQP] 
ON [ARCSITE].[CSI_SVID] = [ARCSEQP].[SERVID] 

这很好地工作。但是,如果来自连接的值不匹配,我也想将[isKid]设置为0。我可以通过编写单独的更新语句来完成此任务,但是我想知道是否可以使用某种IF ... ELSE语句来执行此操作。这可能不是最好的方式,但它似乎比两个单独的更新语句更有效。如果我错了,先去理会我。

回答

5

使用LEFT JOINCASE声明。

UPDATE [ARCSEQP] 
SET  [isKid] = CASE WHEN [ARCSEQP].[SERVID] IS NULL THEN 0 ELSE 1 END 
FROM [ARCSITE] 
     LEFT JOIN [ARCSEQP] 
      ON [ARCSITE].[CSI_SVID] = [ARCSEQP].[SERVID]