2010-08-20 5 views
1

Je veux mettre les résultats de la requête sql dans une table mais si je choisis les noms de colonnes INTO NEWTABLE (qui n'est pas créé), c'est bon pour une fois mais quand je lance à nouveau cette requête, dit que le tableau existe déjà. Tout ce que je fais, c'est les résultats de cette requête dans newtable et je vais l'exécuter chaque semaine, donc ça ne devrait pas me donner l'erreur: la table existe déjà.Résultats de la requête SQL dans une table

Par exemple: je veux mettre les résultats de requête suivants dans un Newtable EmployeeDetails et je vais l'exécuter chaque semaine.

select a.Name, b.Id 
from Database1 a left join 
    Database2 b 
ON a.Id = b.Id 
+0

Vous voulez seulement que le script fasse une nouvelle table une fois? Ensuite, chaque semaine, ajoutez simplement des données sur l'existant? –

+0

Dupliquer de [Comment créer une table à partir des résultats d'une requête SQL?] (Http://stackoverflow.com/questions/3534735/how-to-create-a-table-from-the-results-of-a -sql-query) –

+0

@OMG: pas tout à fait, un peu un scénario différent –

Répondre

2

Vérifiez avec IF EXISTE

par exemple pour le serveur SQL

IF EXISTS (SELECT * FROM sys.objects 
WHERE object_id = OBJECT_ID(N'[dbo].[YOurTableName]') 
AND type in (N'U')) 
BEGIN 
     DROP TABLE [dbo].[YOurTableName 
END 

select * into [dbo].[YOurTableName] 
from ...... 
+0

Seulement bon si vous voulez remplacer complètement les données. – HLGEM

+0

J'ai compris qu'il voulait utiliser select dans .... – SQLMenace

3

Utilisez plutôt INSERT INTO.

Mais assurez-vous que la table est déjà créée avant d'appeler insérer dans la première fois,

INSERT INTO table1 (column1, column2, ...) 
SELECT column3, column4, ... 
FROM table2 
0

utilisation - Insertion dans newtbl sélectionnez x, y, z de TBL

(faire que vous créez la table en premier)

+0

J'ai essayé ça mais le nom de la table va être le même donc ça me donne la même erreur: la table existe déjà – User7354632781

0

Si vous avez seulement besoin de la table générée pour la durée de la connexion SQL en cours, créer une table temporaire:

CREATE TEMPORARY TABLE newtable SELECT the_rest_of_your_query

Ou, si vous voulez garder la table pendant une semaine, mais le remplacer complètement chaque semaine, assurez-vous qu'il est parti d'abord:

DROP TABLE IF EXISTS newtable

2
IF EXISTS (SELECT * FROM sys.objects 
    WHERE object_id = OBJECT_ID(N'[dbo].[YOurTableName]') AND type in (N'U')) 
     //INSERT INTO STATEMENT 
ELSE 
    //SELECT INTO STATEMENT THAT U ALREADY HAVE 
Questions connexes