更新 Postgres 中另一个查询的表使用结果

时间:2021-04-16 18:44:13

标签: sql postgresql join sql-update

我有一张像这样的 2 张桌子:

table1: (time, value, id) , table2:(time, value, id, ...< /em>)

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

SELECT * from table2 where value > 2

并且这个查询返回超过数百行,

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

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

1 个答案:

答案 0 :(得分:1)

Postgres 支持 UPDATEFROM 子句:

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