PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

sposta i dati da una tabella all'altra, edizione postgresql

[Espansione sulla risposta di dvv]

Puoi passare a una tabella esistente come segue. Per lo schema non corrispondente, devi specificare le colonne.

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;

Ma vuoi spostare i dati in un nuovo tabella (non esistente), la sintassi esterna è diversa:

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;