【发布时间】:2021-05-27 04:21:35
【问题描述】:
我在 oracle 中有这个合并查询,它工作正常。现在我们正在迁移到 postgres 10 并尝试在 postgres 中找到等效的。
MERGE INTO s.act_pack C USING((SELECT A.jid, A.pid, B.pcode,
B.mc, A.md, A.hd FROM s.act_pack A INNER JOIN s.act_pack B
ON A.pid = B.pid AND A.pcode = B.mc AND (A.hd <> B.hd
OR A.md<> B.md)) order by A.upd_ts desc) D ON(C.pid = D.pid AND
C.pcode = D.pcode AND C.jid = D.jid) WHEN MATCHED THEN UPDATE SET C.md =
D.md, C.hd= D.hd;
我在网上看到一些论坛说 postgres 不支持合并,并使用 INSERT ... ON CONFLICT 但是没有 postgres 的背景,我无法理解如何使用它来编写这个复杂的查询。
还有人说postgres9.5及以上支持merge语句。因为我们使用 postgres 10 尝试在 postgres 中使用相同的 oracle 查询,但收到 ERROR: syntax error at or near "MERGE"
非常感谢任何帮助。
【问题讨论】:
标签: postgresql join sql-update