我有3张桌子
表A
ID Remark
1 NULL
2 Null
4 Null
表B
ID Remark
1 Null
2 Null
4 Null
表C
ID
1
2
3
我想通过加入表A和表C来更新表B备注,其中表C中不存在表A中的记录。
所以最终的输出看起来像
表B
ID Remark
1 Null
2 Null
4 Invalid Entry
到目前为止,我已经尝试过查询:
Update TableB set Remark='Invalid'
where not exists ( select ID from TableA join TableC on TableA.ID=TableC.ID)
但我认为存在一些问题。有人可以帮助我。
答案 0 :(得分:2)
您忘记将TableB连接到存在
Update TabB
set Remark='Invalid'
from TableB TabB
where not exists
(
select 1
from TableA
join TableC
on TableA.ID=TableC.ID
where TabB.id = TableA.id
)
答案 1 :(得分:1)
我想你想要not in
:
Update TableB
set Remark = 'Invalid'
where id not in (select a.ID from TableA a join TableC c on a.ID = c.ID);
或者,您希望在id
和TableA
都不同时更新TableC
。我发现这更容易理解:
Update b
set Remark = 'Invalid'
from TableB b
where not exists (select 1 from TableA a where a.id = b.id) and
not exists (select 1 from TableC c where c.id = b.id) ;