[dvvの回答を拡張する]
次のようにして、既存のテーブルに移動できます。一致しないスキーマの場合は、列を指定する必要があります。
WITH moved_rows AS (
DELETE FROM <original_table> a
USING <other_table> b
WHERE <condition>
RETURNING a.* -- or specify columns
)
INSERT INTO <existing_table> --specify columns if necessary
SELECT [DISTINCT] * FROM moved_rows;
ただし、データを新しいに移動する必要があります テーブル(既存のものではありません)、外部構文が異なります:
CREATE TABLE <new_table> AS
WITH moved_rows AS (
DELETE FROM <original_table> a
USING <other_table> b
WHERE <condition>
RETURNING a.* -- or specify columns
)
SELECT [DISTINCT] * FROM moved_rows;