使用 H2 中 CTE 的结果集进行更新
Posted
技术标签:
【中文标题】使用 H2 中 CTE 的结果集进行更新【英文标题】:update using the resultset from CTE in H2 【发布时间】:2019-10-21 12:22:46 【问题描述】:我正在尝试使用 CTE 的结果集更新表。参考this question
如果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】: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;
【讨论】:
以上是关于使用 H2 中 CTE 的结果集进行更新的主要内容,如果未能解决你的问题,请参考以下文章