1. ホーム
  2. sql

[解決済み] PostgreSQLでサブクエリから更新または挿入(複数行、複数列)する方法

2022-07-21 18:38:59

質問

postgresでこのようなことをやろうとしています。

  • UPDATE table1 SET (col1, col2) = (SELECT col2, col3 FROM othertable WHERE othertable.col1 = 123);

  • INSERT INTO table1 (col1, col2) VALUES (SELECT col1, col2 FROM othertable)

しかし、ポイント1は、ドキュメントに記載されているように、postgres 9.0でも可能ではありません( http://www.postgresql.org/docs/9.0/static/sql-update.html )

また、ポイント2も機能していないようです。次のようなエラーが発生します。

誰かが私のために回避策を持っていることを望みます。そうでなければ、クエリは多くの時間を取ります :(.

参考までに、私は複数のテーブルから異なる列を選択し、それらを一時テーブルに保存し、別のアプリケーションが準備されたデータを簡単に取得できるようにしようとしています。

どのように解決するのですか?

UPDATEについて

使用します。

UPDATE table1 
   SET col1 = othertable.col2,
       col2 = othertable.col3 
  FROM othertable 
 WHERE othertable.col1 = 123;

INSERTの場合

使用します。

INSERT INTO table1 (col1, col2) 
SELECT col1, col2 
  FROM othertable

は必要ありません。 VALUES 構文は必要ありません。