尝试这样做:
UPDATE table1 t1
SET cost = t2.price
FROM table2 t2
WHERE t1.item_id = t2.item_id
它正在使用PostgreSQL,但没有使用HSQLDB。
如何修复此脚本以支持在PostgreSQL和HSQLDB上工作?
答案 0 :(得分:3)
UPDATE ... FROM
语法是非标准的。这是标准SQL,适用于HSQLDB(显然在PostgreSQL中)。我很惊讶PostgreSQL 9.4语法文档没有提到自1992年以来一直在标准中的这种语法。
UPDATE table1 t1
SET cost = (SELCT t2.price
FROM table2 t2
WHERE t1.item_id = t2.item_id)
答案 1 :(得分:1)
HSQLDB不支持UPDATE ... FROM
语句。在HSQLDB上使用MERGE statement代替。在我的脑海中,希望这不包含语法错误:
MERGE INTO table1 USING table2 ON table1.item_id = table2.item_id
WHEN MATCHED THEN UPDATE SET table1.cost = table2.price
不幸的是,截至今天,postgres似乎并不支持MERGE statement,而只支持类似的UPSERT。