обновить, используя набор результатов из CTE в H2 - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь обновить таблицу, используя набор результатов из CTE. Со ссылкой на этот вопрос

Будет ли работать запрос, если table_b является результатом CTE, подобным этому

With table_b as (select 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)

1 Ответ

0 голосов
/ 22 октября 2019

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...