Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tránh trùng lặp trong truy vấn CHÈN VÀO CHỌN trong SQL Server

Sử dụng 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)

Sử dụng 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)

Sử dụng 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

Trong ba tùy chọn, LEFT JOIN/IS NULL kém hiệu quả hơn. Xem liên kết này để biết thêm chi tiết.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tầng một ngày trong máy chủ SQL

  2. Tạo mảng JSON lồng nhau bằng FOR JSON PATH

  3. Cách cập nhật các hàng với một ngày ngẫu nhiên

  4. Cài đặt và cấu hình SQL Server Log Shipping &Disaster Recovery -2

  5. Nhóm DateTime thành các khoảng thời gian 5,15,30 và 60 phút