web-dev-qa-db-ja.com

別のクエリの結果を使用してテーブルを更新する

私はうまくいく次のクエリを持っています

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

また、RecordIDフィールドとRankフィールドを(とりわけ)含む別のテーブル(table2)があります。上記のクエリの結果に基づいて、table2のRecordIDとRankを更新したいと思います。それは可能ですか?

8
Thomas

はい、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;
17
Gordon Linoff

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;
0
Lev Buchel