sql >> Database teknologi >  >> RDS >> Sqlserver

Undgå dubletter i INSERT INTO SELECT-forespørgslen i SQL Server

Brug af 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)

Brug af 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)

Brug af 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

Af de tre muligheder er LEFT JOIN/IS NULL er mindre effektiv. Se dette link for flere detaljer.



  1. Sådan opretter du en tabel i MySQL

  2. Sådan fjerner du de efterfølgende mellemrum efter månedens navn i Oracle

  3. PostgreSQL belastningsbalancering ved hjælp af HAProxy &Keepalved

  4. T-SQL:Sletter alle duplikerede rækker, men beholder én