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

时间:2015-05-21 21:22:11

标签: sql postgresql

我有以下查询可以正常使用

SELECT RecordID, ROW_NUMBER() OVER (ORDER BY (Value1) DESC) AS Rank
FROM Table1

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

2 个答案:

答案 0 :(得分:16)

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

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;

答案 1 :(得分:0)

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;