【问题标题】:Update a table use result of another query in Postgres在 Postgres 中更新另一个查询的表使用结果
【发布时间】:2021-07-11 19:08:54
【问题描述】:

我有一个这样的 2 表:

table1: (time, value, id) , table2:(time, value, id, ...)

我需要使用基于 idtable2 查询结果来更新 table1, 例如查询可以是:

SELECT * from table2 where value > 2

并且此查询返回数百行,

我需要根据id (set time=q.time, value=q.value where id=q.id) 用这些行更新table1 是否可以使用sql 查询?

我不需要 UPSERT,因为我确定两个表中的 id 相同,只需要更新

【问题讨论】:

  • 请提供样本数据和所需的输出

标签: sql postgresql join sql-update


【解决方案1】:

Postgres 支持FROM 子句用于UPDATE

update table1
   set time = q.time, 
       value = q.value
from table2 q
where table2.id = table1.id
  and table2.value > 2;

【讨论】:

  • @Sam 如果该答案解决了您的问题,那么请accept 它,以便您的问题被标记为已解决。
猜你喜欢
  • 2015-08-03
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多