当与源不匹配时,将列更新为-1,然后匹配实际值

时间:2015-08-26 15:47:49

标签: sql sql-server sql-server-2008-r2

你能帮我解决这个问题。

我有source tabletarget table. 我想使用来源table A更新目标table B中的列。 如果我使用table B找到与inner join的匹配项,那么我想在target table column中更新它,否则如果不匹配,我想将目标表中的列更新为-1。

ie.something like this ...

update table a
set a.column1= b.column1
from table a inner join table b
on a.column1=b.column1

如您所知,只有在源表中找到匹配值时,上述查询才会更新target table's列。

但我还希望在找不到与源表b匹配时将target table 's列设置为-1

我已经尝试了很多,可以找到解决方案。 任何人都可以试试这件事......提前致谢。

1 个答案:

答案 0 :(得分:2)

喜欢这个。我认为NULL会比代理-1值更合适,但这取决于你。就个人而言,当真正有意义的是NULL时,我真的不喜欢占位符值。

update table a 
set a.column1 = isnull(b.column1, -1)
from table a 
left join table b on a.column1=b.column1