Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Избягвайте дублирането в заявката INSERT INTO SELECT в SQL Server

Използване на 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)

Използване на 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 :

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

От трите опции LEFT JOIN/IS NULL е по-малко ефективен. Вижте тази връзка за повече подробности.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MONTH() Примери в SQL Server (T-SQL)

  2. Как да използвате логически оператор EXISTS в SQL Server - SQL Server / TSQL урок, част 125

  3. 3 начина за използване на ВСИЧКИ в SQL Server

  4. Използване на SQL Server sp_msforeachtable за избор само на онези таблици, които отговарят на някакво условие

  5. Защо се счита за лоша практика да се използват курсори в SQL Server?