sql >> Databáze >  >> RDS >> Sqlserver

Vyhněte se duplicitám v dotazu INSERT INTO SELECT na serveru SQL Server

Pomocí 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)

Pomocí 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)

Pomocí 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

Ze tří možností LEFT JOIN/IS NULL je méně efektivní. Další podrobnosti naleznete na tomto odkazu.



  1. SQL Server 2008 Vertikální data na vodorovnou

  2. Systém správy velkých databází:Návrh a architekt

  3. Jak mohu použít kaskádu mazání v mysql?

  4. Získejte seznam databází ze serveru SQL Server