83 votes

Déplacer des données SQL d'une table à une autre

Je me demandais s'il était possible de déplacer toutes les lignes de données d'une table à l'autre, qui correspondent à une certaine requête ?

Par exemple, j'ai besoin de déplacer toutes les lignes de table de Table1 vers Table2 où leur nom d'utilisateur = 'X' et leur mot de passe = 'X', afin qu'elles n'apparaissent plus dans Table1.

J'utilise SQL Server 2008 Management Studio.

1voto

gpdude_ Points 172

Voici comment le faire avec une seule déclaration

WITH deleted_rows AS (
DELETE FROM source_table WHERE id = 1
RETURNING *
) 
INSERT INTO destination_table 
SELECT * FROM deleted_rows;

EXEMPLE :

    postgres=# select * from test1 ;
 id |  name
----+--------
  1 | yogesh
  2 | Raunak
  3 | Varun
(3 rows)

postgres=# select * from test2;
 id | name
----+------
(0 rows)

postgres=# WITH deleted_rows AS (
postgres(# DELETE FROM test1 WHERE id = 1
postgres(# RETURNING *
postgres(# )
postgres-# INSERT INTO test2
postgres-# SELECT * FROM deleted_rows;
INSERT 0 1

postgres=# select * from test2;
 id |  name
----+--------
  1 | yogesh
(1 row)

postgres=# select * from test1;
 id |  name
----+--------
  2 | Raunak
  3 | Varun

0voto

user1847437 Points 213

Si les deux tables utilisent le même ID ou ont une clé UNIQUE commune :

1) Insérer l'enregistrement sélectionné dans le tableau 2

INSERT INTO table2 SELECT * FROM table1 WHERE (conditions)

2) supprimer l'enregistrement sélectionné de la table1 s'il est présent dans la table2

DELETE FROM table1 as A, table2 as B WHERE (A.conditions) AND  (A.ID = B.ID)

0voto

Il va créer une table et copier toutes les données de l'ancienne table vers la nouvelle.

SELECT * INTO event_log_temp FROM event_log

Et vous pouvez effacer les anciennes données de la table.

DELETE FROM event_log

0voto

Marc Dammers Points 1

Pour certains scénarios, le plus simple serait de script sortir Table1, de renommer la Table1 existante en Table2 et d'exécuter le script pour recréer Table1.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X