我try 在Postgres 16.2中使用MERGE语句,您可以找到以下示例:
MERGE INTO schema1.target_table AS t
USING schema2.source_table AS s
ON t.id = s.id
WHEN MATCHED THEN
UPDATE SET
data1 = s.data1,
data2 = s.data2
WHEN NOT MATCHED BY TARGET
INSERT (id, data1, data2,)
VALUES (s.id, s.data1, s.data2)
WHEN NOT MATCHED BY SOURCE
DELETE;
在try 此查询时,我发现Postgres从版本15开始就支持MERGE语句,但它不支持"BY TARGET"或"BY SOURCE"语句,从而引发以下错误:
SyntaxError: syntax error at or near "BY"
LINE 8: WHEN NOT MATCHED BY TARGET
在我寻找更Clean 替代品以实现同样的结果时,我遇到了这helpful but old answer个.虽然它工作得很好,但我发现它有点难以理解,我宁愿避免它,以保持我的代码尽可能干净.
你知道有什么方法可以用更干净的方式达到同样的效果吗?