Evite duplicatas na consulta INSERT INTO SELECT no SQL Server
Eu tenho as seguintes duas tabelas:
Table1
----------
ID Name
1 A
2 B
3 C
Table2
----------
ID Name
1 Z
Eu preciso inserir dados deTable1
paraTable2
. Eu posso usar a seguinte sintaxe:
INSERT INTO Table2(Id, Name) SELECT Id, Name FROM Table1
No entanto, no meu caso, podem existir IDs duplicados emTable2
(no meu caso, é apenas "1
") e não quero copiar isso novamente, pois isso geraria um erro.
Eu posso escrever algo como isto:
IF NOT EXISTS(SELECT 1 FROM Table2 WHERE Id=1)
INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1
ELSE
INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1 WHERE Table1.Id<>1
Existe uma maneira melhor de fazer isso sem usarIF - ELSE
? Eu quero evitar duasINSERT INTO-SELECT
declarações baseadas em alguma condição.