SQL Server:IF EXISTS; 其他

我有一张桌子A:

ID value 1 100 2 101 2 444 3 501 

还有TableB

 ID Code 1 2 

现在我想填充表B的col =代码,如果tableA中存在ID = 2。 对于多个值,获得最大值。 否则用“123”填充它。 现在这是我用的:

 if exists (select MAX(value) from #A where id = 2) BEGIN update #B set code = (select MAX(value) from #A where id = 2) from #A END ELSE update #B set code = 123 from #B 

我相信在BEGIN; END或IF EXIST; ELSE中有一些问题。 基本上我想绕过else部分,如果IF部分中的select语句存在,反之亦然。 例如,如果IF = part的select语句是:

 (select MAX(value) from #A where id = 4) 

它应该只填充123,因为ID = 4不存在! 请教育! 提前致谢

编辑

我想添加你的IF语句似乎不起作用的原因。 当你在一个聚集上做一个EXISTS时,它总是会是true 。 即使ID不存在,它也会返回一个值。 当然,它是NULL ,但它返回。 相反,这样做:

 if exists(select 1 from table where id = 4) 

你会到达你的IF语句的ELSE部分。


现在,这是一个更好的,基于集合的解决scheme:

 update b set code = isnull(a.value, 123) from #bb left join (select id, max(value) from #a group by id) a on b.id = a.id where b.id = yourid 

这有利于能够在整个桌子上运行,而不是单个的ID。

尝试这个:

 Update TableB Set Code = Coalesce( (Select Max(Value) From TableA Where Id = b.Id), 123) From TableB b