2017-06-07 49 views
2

作爲開發數據庫我使用MySQL,併爲測試我使用H2數據庫。 以下腳本在MySQL中工作得很好,但在H2上失敗。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子句JOIN。也許有一種方法可以在不使用JOIN子句的情況下重寫此腳本?

順便說一句,我使用liquibase。也許我可以用它的xml語言寫UPDATE子句?

我嘗試了下面的腳本

UPDATE table_a, table_b 
SET table_a.b_id = table_b.id 
WHERE table_a.id = table_b.a_id 

但我仍然得到錯誤。看起來,H2不支持在一個查詢中更新多個表。我如何在兩個不同的查詢中重寫這個查詢來收集id並插入它們?

回答

2

嘗試這樣:

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)