作为开发DB我正在使用MySQL,而对于测试我正在使用H2数据库。 以下脚本在MySQL中运行良好,但在H2上失败。
UPDATE `table_a`
JOIN `table_b` ON `table_a`.id=`table_b`.a_id
SET `table_a`.b_id=`table_b`.id
在互联网上,我发现h2不支持带有UPDATE
的{{1}}子句。也许有一种方法可以在没有JOIN
子句的情况下重写这个脚本?
顺便说一下,我正在使用liquibase。也许我可以用它的xml语言编写JOIN
子句?
我尝试了以下脚本
UPDATE
但我仍然会遇到错误。似乎,H2不支持在一个查询中更新多个表。如何在两个不同的查询中重写此查询以收集ID并插入它们?
答案 0 :(得分:6)
尝试这样的事情:
update table_a a
set a.b_id = (select b.id from table_b b where b.a_id = a.id)
where exists
(select * from table_b b where b.a_id = a.id)