sql >> Databasteknik >  >> RDS >> Sqlserver

Undvik dubbletter i INSERT INTO SELECT-frågan i SQL Server

Använder 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)

Använder 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)

Använder LEFT JOIN/IS NULL :

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

Av de tre alternativen är LEFT JOIN/IS NULL är mindre effektiv. Se den här länken för mer information.



  1. Hur man redigerar MySQL my.cnf-filen

  2. Vad är @@TEXTSIZE i SQL Server?

  3. LÖST:Microsoft Office 365 version 2009 kan bryta din databasapplikation

  4. Hur kan jag hitta en kolumn överallt i SQL Server?