Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Unikaj duplikatów w zapytaniu INSERT INTO SELECT w SQL Server

Używanie 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)

Używanie 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)

Używanie 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

Z trzech opcji LEFT JOIN/IS NULL jest mniej wydajny. Zobacz ten link, aby uzyskać więcej informacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lokalnie a SaaS:Architektura systemu monitorowania baz danych

  2. sql grupuj tylko według wierszy, które są w sekwencji

  3. SET a SELECT podczas przypisywania zmiennych?

  4. Jak ustawić wartość logiczną w SQL?

  5. oddziel wartości oddzielone przecinkami i przechowuj w tabeli na serwerze sql