sql >> Database >  >> RDS >> Sqlserver

Vermijd duplicaten in INSERT INTO SELECT-query in SQL Server

Gebruik NOT EXISTS :

INSERT INTO TABLE_2
  (id, name)
SELECT t1.id,
       t1.name
  FROM TABLE_1 t1
 WHERE NOT EXISTS(SELECT id
                    FROM TABLE_2 t2
                   WHERE t2.id = t1.id)

Gebruik NOT IN :

INSERT INTO TABLE_2
  (id, name)
SELECT t1.id,
       t1.name
  FROM TABLE_1 t1
 WHERE t1.id NOT IN (SELECT id
                       FROM TABLE_2)

LEFT JOIN/IS NULL gebruiken :

INSERT INTO TABLE_2
  (id, name)
   SELECT t1.id,
          t1.name
     FROM TABLE_1 t1
LEFT JOIN TABLE_2 t2 ON t2.id = t1.id
    WHERE t2.id IS NULL

Van de drie opties is de LEFT JOIN/IS NULL is minder efficiënt. Zie deze link voor meer details.



  1. MariaDB CURRENT_ROLE() uitgelegd

  2. Log DBMS_OUTPUT.Put_Line-uitvoer in tabel in Oracle met DBMS_OUTPUT.Get_Lines

  3. Voeg meerdere resultaatrijen van één kolom samen tot één, groepeer op een andere kolom

  4. Wat is de beste manier om met DBNull's om te gaan?