[英]Can I use an IF…ELSE statement to set a field? (T-SQL)
我目前有一个查询,如果两个值使用INNER JOIN从两个不同表中的两个字段匹配,则将字段的值设置为“ 1”。 当前是这样的:
UPDATE [ARCSEQP]
SET [isKid] = 1
FROM [ARCSITE]
INNER JOIN [ARCSEQP]
ON [ARCSITE].[CSI_SVID] = [ARCSEQP].[SERVID]
这很完美。 但是,如果联接中的值不匹配,我也想将[isKid]设置为0。 我可以通过编写单独的更新语句来做到这一点,但我想知道是否可以使用某种IF ... ELSE语句来做到这一点。 这可能不是最好的方法,但它似乎比两个单独的更新语句更有效。 如果我错了,那就去纠正我。
使用LEFT JOIN
和CASE
语句。
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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.