union tout avec n'existe pas et insert dans

J'essaye d'écrire une requête dans laquelle je devrais vérifier si les disques sont déjà là, s'ils sont, n'insérez pas datatables encore.

J'écris ceci comme un exemple, je ne connais pas la syntaxe correcte pour ce que j'essaye d'accomplir. S'il vous plaît find mon essai ci-dessous.

select * from ( insert into dbo.myTable select mt.* from #myTemp mt union all select * from #someTemp1 union all select * from #someTemp2 ) tb where not exists ( select tb.* ) 

Est-ce la bonne façon d'utiliser insert avec union all s'il not exists ? J'ai trouvé quelques exemples avec une sélection de union all where not exists union all where not exists mais j'aimerais en voir un avec insert aussi.

Je suis également curieux s'il est possible de le faire sans utiliser la fusion .

Vous pouvez utiliser MERGE comme suggéré dans les commentaires ou simplement substract de la sum des valeurs existantes.

 CREATE TABLE #myTable(col INT); CREATE TABLE #myTemp(col INT); CREATE TABLE #someTemp1(col INT); CREATE TABLE #someTemp2(col INT); INSERT INTO #myTable(col) VALUES (1), (2), (3); INSERT INTO #myTemp(col) VALUES (10), (20), (30); INSERT INTO #someTemp1(col) VALUES (1), (2), (3); INSERT INTO #someTemp2(col) VALUES (11), (2), (31); INSERT INTO #myTable(col) ( SELECT mt.col FROM #myTemp mt UNION ALL SELECT col FROM #someTemp1 UNION ALL SELECT col FROM #someTemp2 ) EXCEPT SELECT col FROM #myTable; SELECT * FROM #myTable; 

LiveDemo