id
также необходимо выбрать, иначе b.id
не будет найдено.
with table_b as (select id, a_id from table_x)
update table_a a
set a.b_id = (select b.id from table_b b where b.a_id = a.id)
where a.id = (select b.a_id from table_b b where b.a_id = a.id)
Вам следует также рассмотреть команду MERGE
вместо UPDATE
, она может быть более эффективной.
with table_b as (select id, a_id from table_x)
merge into table_a using table_b on table_a.id = table_b.a_id
when matched then update set b_id = table_b.id;