web-dev-qa-db-fra.com

"select * into table" Cela fonctionnera-t-il pour insérer des données dans une table existante?

J'essaie d'insérer des données d'une de mes tables existantes dans une autre table existante.

Est-il possible d'insérer des données dans n'importe quelle table existante en utilisant la requête select * into. Je pense que cela peut être fait en utilisant l'union, mais dans ce cas, je dois enregistrer toutes les données de ma table existante dans une table temporaire, puis supprimer cette table et Enfin, appliquez l'union pour insérer tous les enregistrements dans la même table.

par exemple.

select * into #tblExisting from tblExisting
drop table tblExisting
select * into tblExisting from #tblExisting union tblActualData

Ici, tblExisting est la table dans laquelle je veux réellement stocker toutes les données TblActualData est la table à partir de laquelle les données doivent être ajoutées à tblExisting.

Est-ce la bonne méthode. Avons-nous une autre alternative?

15
Shantanu Gupta

Tu devrais essayer

INSERT INTO ExistingTable (Columns,..)
SELECT Columns,...
FROM OtherTable

Regardez INSERT

et SQL SERVER - Insérer des données d’une table dans une autre table - INSERT INTO SELECT - SELECT INTO TABLE

25
Adriaan Stander

Non, vous ne pouvez pas utiliser SELECT INTO pour insérer des données dans une table existante.

La documentation le dit très clairement:

SELECT… INTO crée un nouvelle table dans le groupe de fichiers par défaut et y insère les lignes résultantes de la requête.

Vous voulez généralement éviter d'utiliser SELECT INTO en production car cela vous donne très peu de contrôle sur la création de la table et peut entraîner toutes sortes de problèmes de verrouillage et autres problèmes de performances. Vous devez créer des schémas explicitement et utiliser INSERT - même pour les tables temporaires.

4
Aaronaught

@Ryan Chase Pouvez-vous le faire en sélectionnant toutes les colonnes avec *? Oui!

INSERT INTO yourtable2 SELECT * FROM yourtable1

0
ShruS
0
adolf garlic