AGx*_*162 0 sql t-sql sql-server-2008
我目前有一个查询,如果两个值使用INNER JOIN从两个不同的表中的两个字段匹配,则将字段的值设置为"1".它目前是这样的:
UPDATE [ARCSEQP]
SET [isKid] = 1
FROM [ARCSITE]
INNER JOIN [ARCSEQP]
ON [ARCSITE].[CSI_SVID] = [ARCSEQP].[SERVID]
Run Code Online (Sandbox Code Playgroud)
这非常有效.但是,如果连接中的值不匹配,我还想将[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]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
485 次 |
最近记录: |