2017-06-07 9 views
2

Als Entwicklungs-DB verwende ich MySQL, und für Tests verwende ich H2-Datenbank. Das folgende Skript funktioniert in MySQL sehr gut, aber es ist fehlgeschlagen auf H2.H2 Update mit Join

UPDATE `table_a` 
JOIN `table_b` ON `table_a`.id=`table_b`.a_id 
SET `table_a`.b_id=`table_b`.id 

Im Internet fand ich, dass h2 nicht UPDATE Klausel mit JOIN unterstützt. Vielleicht gibt es eine Möglichkeit, dieses Skript ohne JOIN Klausel umschreiben?

Übrigens benutze ich liquibase. Vielleicht kann ich UPDATE Klausel mit seiner XML-Sprache schreiben?

Ich habe versucht, das folgende Skript

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

Aber ich immer noch Fehler bekommen. Scheint, dass H2 das Aktualisieren mehrerer Tabellen in einer Abfrage nicht unterstützt. Wie kann ich diese Abfrage in zwei verschiedenen Abfragen umschreiben, um IDs zu sammeln und einzufügen?

Antwort

2

versuchen, etwas wie folgt aus:

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)