0

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

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

这完美地工作。但是,如果连接中的值不匹配,我也想将 [isKid] 设置为 0。我可以通过编写一个单独的更新语句来做到这一点,但我想知道是否可以使用某种 IF...ELSE 语句来做到这一点。这可能不是最好的方法,但它似乎比两个单独的更新语句更有效。如果我错了,请转过头来纠正我。

4

1 回答 1

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]
于 2013-03-07T16:23:31.617 回答