微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何对 postgrsql 中具有联合的查询进行更新?

如何解决如何对 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 举报,一经查实,本站将立刻删除。