我有舞台和主桌。使用临时表我正在更新主表 下面是供参考的输入和预期输出,我已经编写了查询,但不确定为什么它不更新重复记录并抛出错误 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;