Я думаю, что ваша логика лучше обрабатывается not exists
:
Update table1
set table1.name = null
where not exists (select 1
from table2 join
table3
on table2.id = table3.id
where table2.id = table1.id
);
Это не точно , что указывает ваш запрос - это обновит table1.name
, когда нетсовпадение в table2
. Если это проблема, вы можете сделать:
update table1
set table1.name = null
where exists (select 1
from table2
where table2.id = table3.id
) and
not exists (select 1
from table2 join
table3
on table2.id = table3.id
where table2.id = table1.id
);