我可以使用IF ... ELSE语句来设置字段吗? (T-SQL)

时间:2013-03-07 16:22:05

标签: sql sql-server-2008 tsql

我目前有一个查询,如果两个值使用INNER JOIN从两个不同的表中的两个字段匹配,则将字段的值设置为“1”。目前就是这样:

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

这完美无缺。但是,如果连接中的值不匹配,我还想将[isKid]设置为0。我可以通过编写单独的更新语句来完成此操作,但我想知道是否可以使用某种IF ... ELSE语句来执行此操作。这可能不是最好的方法,但它似乎比两个单独的更新语句更有效。如果我错了,请先去纠正我。

1 个答案:

答案 0 :(得分: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]