HSQLDB从另一个表的字段更新一个表的字段

时间:2015-07-14 12:41:14

标签: sql postgresql join hsqldb

尝试这样做:

UPDATE table1 t1
SET cost = t2.price
FROM table2 t2
WHERE t1.item_id = t2.item_id

它正在使用PostgreSQL,但没有使用HSQLDB。

如何修复此脚本以支持在PostgreSQL和HSQLDB上工作?

2 个答案:

答案 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。