Postgres 查询更新记录

问题描述 投票:0回答:1

我有舞台和主桌。使用临时表我正在更新主表 下面是供参考的输入和预期输出,我已经编写了查询,但不确定为什么它不更新重复记录并抛出错误 ERROR:不允许同一查询对一行进行多次更新。

stg

身份证 瓦尔 更新了
1 值1
2 值2
3 值3
3 值3
4 价值4

主要

身份证 瓦尔 更新了
1 价值5
1 价值5
2 价值8
2 价值8
3 值3

预期输出:

身份证 瓦尔 更新了
1 值1
1 值1
2 值2
2 值2
3 值3

查询:我已经尝试过下面的查询,但它没有按预期工作,由于某种原因不允许通过同一查询对一行进行多次更新,如果任何专家可以帮助如何在这种情况下编写查询,请告诉我:

UPDATE test   
SET val=s.val,updated=s.updated FROM (select distinct s1.val,
s1.updated
from stg s1,
test t1 
WHERE t1.id=s1.id a)s;
sql postgresql postgresql-9.5
1个回答
0
投票

您的更新错误。

您可以在手册中找到它应该如何

UPDATE main m
SET "val" = s."val" , "updated" = s."updated"
FROM stg s
WHERE s."Id" = m."Id"
UPDATE 5
SELECT * FROM main
身份证 瓦尔 更新了
1 值1
1 值1
2 值2
2 值2
3 值3
SELECT 5

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.