簡體   English   中英

在 Postgres 中更新另一個查詢的表使用結果

[英]Update a table use result of another query in Postgres

我有一個像這樣的 2 表:

table1 :(時間,值,id ), table2 :(時間,值,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 相同,只需要更新

Postgres 支持UPDATEFROM子句:

update table1
   set time = q.time, 
       value = q.value
from table2 q
where table2.id = table1.id
  and table2.value > 2;
SELECT * 
into temp buffer     
from table2 
where value > 2;


insert into table1(list of columns to be updated)
select (list of columns to be selected)
from buffer;

NOTE___ --buffer 是一個臨時表,用於存儲主查詢的 output -- 確保兩個表(table1 和 table2)具有相同的列並且以相同的順序排列

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM