如何解决如何对 postgrsql 中具有联合的查询进行更新?
我有 2 个表,名称为 test 和 test_snapshop。在测试表中,我正在保存当前数据,而在 test_snapshot 中,我正在保存旧数据。现在我需要对一些 id 值进行更新。这可能是一些 id 存在于测试中,而另一些存在于快照表中。
我是这样试的
update test
set column1=value,column2=value,column3=value
where column4 in(1,2,3)
union
update test_snapshot
set column1=value,3)
两个表具有相同的列号和名称。
上述查询与预期不符。我在这个查询中做错了什么。任何人都可以帮助我吗。
我是 postgresql 的新手。
解决方法
虽然我投票关闭作为一个错字,你可以在 Postgres 中使用一条语句来表达这一点。我可能会去:
with ids as (
select *
from (values (1),(2),(3)) v(id)
),t as (
update test
set column1 = value,column2 = value,column3 = value
where column4 in (select i.id from ids i)
)
update test_snapshot
set column1 = value,column3 = value
where column4 in (select i.id from ids i);
使用这种结构,您只需列出 id 值一次。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。