Thêm Dữ Liệu Mới Vào Bảng Dùng LEFT JOIN

Vũ Huy Tâm

Giả sử bạn có hai bảng TableA và TableB có cùng cấu trúc gồm 3 cột như sau: ID int primary key, Ten nvarchar(100), Diachi nvarchar(200); Giờ bạn muốn INSERT dữ liệu vào bảng TableA từ bảng TableB cho các dòng vốn chưa có trong bảng TableA. Bạn có thể làm thế này:

INSERT dbo.TableA(ID, Ten, Diachi)
SELECT b.ID, b.Ten, b.Diachi
FROM TableB b
LEFT JOIN TableA a ON a.ID = b.ID
WHERE a.ID IS NULL

Giải thích: Câu lệnh SELECT dùng LEFT JOIN từ TableB tới TableA với điều kiện WHERE a.ID IS NULL sẽ lọc ra các bản ghi trong TableB mà không có trong TableA. Kết quả của lệnh SELECT này được dùng để INSERT vào TableA. Vì SQL Server thực hiện câu lệnh theo tập, nên lệnh SELECT chỉ được thực hiện 1 lần và các bản ghi tìm được sẽ được dùng cho INSERT (không phải là SELECT được 1 bản ghi rồi INSERT, rồi quay lại SELECT tiếp bản ghi thứ hai rồi lại INSERT…).




Tags: , ,

2 Comments
Posted on 13/4/2010 | Categories: SQL Server Programming

Các bài viết tương tự

Comments
  • mai (25/03/2015 12:05 am)

    nếu nó ko cùng cấu trúc thì sao?

  • mai (25/03/2015 12:07 am)

    Nếu muốn thêm vào bảng này 1 bản ghi, và thêm vào trong bảng liên kết với nó cái khóa chính của bảng vừa ghi thì làm ntn ạ.Giúp em với ạ?

Leave a Reply

Hướng dẫn: Để nhập mã T-SQL bạn dùng thẻ <pre lang="tsql"> và </pre>.
Ví dụ: <pre lang="tsql">SELECT * FROM MyTable</pre>