我正在尝试解决 t-sql 练习我需要通过 id 加入来使用第二个值更新第一个表。如果我无法加入,则使用默认 ID 中的值(默认 ID 是为空的 ID)
请运行它以查看它
declare @t as table (
[id] INT
,val int
)
insert into @t values (null, null)
insert into @t values (2, null)
insert into @t values (3, null)
insert into @t values (4, null)
declare @t2 as table (
[id] INT
,val int
)
insert into @t2 values (null, 11)
insert into @t2 values (2, 22)
insert into @t2 values (3, 33)
select * from @t
select * from @t2
update t
set t.val = t2.val
from @t as t join @t2 as t2
on t.id = t2.id
or
(
(t.id is null or t.id not in (select id from @t2))
and t2.id is null
)
select * from @t
这是结果
--@t
id val
---------------
NULL NULL
2 NULL
3 NULL
4 NULL
--@t2
id val
---------------
NULL 11
2 22
3 33
--@t after update
id val
---------------
NULL 11
2 22
3 33
4 NULL
如何使最后一行的 val 等于 11?
4 11