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: , ,

4 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 ạ?

  • Stambyte Stockholm (28/11/2017 4:47 pm)

    Awesome! Its truly awesome piece of writing, I have got much clear idea concerning from this
    article.

  • Peluang Bisnis Baru Sampingan 2018 (07/12/2017 6:35 am)

    The delegates muszt feel the homely warmth and alsoo the seamless organization skills in the event managets
    for the conference being deemed as truly successful.
    Some companies and businesses inside subject industry can be quite successful and also havfe surplus cash.
    However, knowing your lover is better reccommended to learn the characters.

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>