2016-06-23 1 views
-1

Tableau 1: id, fileref, 1, 2, 3, 4, 5, accno, 7, 8, 9, etc, etc ...Copie de 1 table en table 2, duplique pas

tableau 2 : id, fileref, accno

quelqu'un peut m'aider s'il vous plaît créer une requête SQL pour copier table 1 ID, fileref, accno à la table 2 sans doublons, parce que la table 2 a déjà beaucoup d'informations comme la version dépouillée de la table 1 , mais je maintenant importé plus d'informations au tableau 1 et le besoin de déplacer l'identifiant, fileref, accno à la table 2 sans duplication, grâce

+0

S'il vous plaît lire [Comment puis-je poser une bonne question?] (Http://stackoverflow.com/help/how-to-ask) –

Répondre

2
INSERT INTO table2 
SELECT id, fileref, accno 
FROM table1 T 
WHERE NOT EXISTS(SELECT * 
       FROM table2 TT 
       WHERE (T.id = TT.id 
         AND 
         T.fileref = TT.fileref 
         AND 
         T.accno = TT.accno) 
       ) 
+0

celui-ci a travaillé, et selon le temps était le premier: P désolé les gars merci encore – Troz

+0

bienvenue :) @Troz – mohan111

-1
INSERT INTO table2(id, fileref, accno) 

SELECT t1.id, t1.fileref, t1.accno 

FROM table1 t1 

JOIN table2 t2 ON t1.id = t2.id AND t1.fileref = t2.fileref AND t1.accno = t2.accno 

WHERE t2.id IS NULL; 

Devrait le faire.

EDIT:

Couper la partie distincte, joignez-vous aux tables sur les 3 valeurs et vérifier où l'ID de la table 2 est égal à NULL;

Désolé pour le malentendu

+0

Qu'en est-il des doubles? –

+0

@RichBenner DISTINCT dans votre sélection prendra seulement 1 de chaque instance. http://www.w3schools.com/sql/sql_distinct.asp – TanguyB

+0

@TanguyB * table 2 a déjà beaucoup d'informations comme la version dépouillée de la table 1 * vous devez donc vérifier s'il n'y a pas exactement les mêmes lignes dans le tableau 2 – gofr1

0

Faisons des données de test;

IF OBJECT_ID('tempdb..#Table1') IS NOT NULL DROP TABLE #Table1 
GO 
CREATE TABLE #Table1 (id int, fileref varchar(10), accno varchar(10)) 
INSERT INTO #Table1 (id, fileref, accno) 
VALUES 
(1,'File1','Acct1') 
,(2,'File2','Acct2') 
,(3,'File3','Acct3') 
,(4,'File4','Acct4') 
,(5,'File5','Acct5') 

IF OBJECT_ID('tempdb..#Table2') IS NOT NULL DROP TABLE #Table2 
GO 
CREATE TABLE #Table2 (id int, fileref varchar(10), accno varchar(10)) 
INSERT INTO #Table2 (id, fileref, accno) 
VALUES 
(1,'File1','Acct1') 
,(2,'File2','Acct2') 

Cette requête va s'assurer qu'il n'y a pas de correspondance des trois champs.

INSERT INTO #Table2 (id, fileref, accno) 
SELECT 
a.id 
,a.fileref 
,a.accno 
FROM #Table1 a 
LEFT JOIN #Table2 b 
    ON a.id = b.id 
    AND a.fileref = b.fileref 
    AND a.accno = b.accno 
WHERE b.id IS NULL 

Le résultat de cette requête est d'insérer les 3 lignes manquantes dans table2 à partir de table1.