首页 > 解决方案 > 在 Postgres 中更新另一个查询的表使用结果

问题描述

我有一个像这样的 2 表:

表1 :(时间,值,id),表 2:(时间,值,id,...

我需要使用基于id对table2进行查询的结果来更新table1,例如查询可以是:

SELECT * from table2 where value > 2

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

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

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

标签: sqlpostgresqljoinsql-update

解决方案


Postgres 支持UPDATEFROM子句:

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

推荐阅读