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

Tho*_*mas 7 sql postgresql join sql-update

我有以下查询工作正常

SELECT RecordID, ROW_NUMBER() OVER (ORDER BY (Value1) DESC) AS Rank
FROM Table1
Run Code Online (Sandbox Code Playgroud)

另外,我有另一个表(table2),其中包含(其中包括)RecordID和Rank字段.我想根据上面的查询结果更新table2中的RecordID和Rank.那可能吗?

Gor*_*off 18

是的,你可以update在Postgres中有多个表:

update table2
    set rank = t1.rank
    from (SELECT RecordID, ROW_NUMBER() OVER (ORDER BY (Value1) DESC) AS Rank
          FROM Table1
         ) t1
    where table2.RecordId = t1.RecordId;
Run Code Online (Sandbox Code Playgroud)


Lev*_*hel 5

对我有用的(在mysql)是:

update table2, (SELECT RecordID, ROW_NUMBER() OVER (ORDER BY (Value1) DESC) AS Rank 
    FROM Table1) tempTable 
set table2.Rank = tempTable.Rank 
where table2.RecordId = tempTable.RecordId;
Run Code Online (Sandbox Code Playgroud)

  • 我通过搜索类似的问题而不是专门针对“postgresql”发现了这个问题,其他人也可能会发现它很有用。 (2认同)