Tôi có hai bảng SQL Server giống nhau (SOURCE
và DESTINATION
) với nhiều cột trong mỗi bảng. Tôi muốn chèn vào bảng DESTINATION
hàng từ bảng SOURCE
mà không tồn tại trong bảng DESTINATION
. Tôi xác định sự bình đẳng giữa hai hàng nếu tất cả các cột phù hợp ngoại trừ dấu thời gian, cột đếm và khóa chính nguyên. Vì vậy, tôi muốn chèn vào DESTINATION
tất cả các hàng trong SOURCE
không tồn tại trong DESTINATION
bỏ qua số lượng, dấu thời gian và các cột khóa chính.hợp nhất nội dung của hai bảng không trùng lặp nội dung
Làm cách nào để thực hiện việc này?
Cảm ơn tất cả những đóng góp! Tôi đã chọn sử dụng lệnh Merge vì nó được cấu trúc để cho phép cập nhật và chèn vào một câu lệnh và tôi cần thực hiện cập nhật riêng biệt.
này là mã mà làm việc:
Merge
into DESTINATION as D
using SOURCE as S
on (
D.Col1 = S.Col1
and D.Col2 = S.Col2
and D.Col3 = S.Col3
)
WHEN MATCHED
THEN UPDATE SET D.Count = S.Count
WHEN NOT MATCHED THEN
INSERT (Col1, Col2, Col3, Count, timestamp)
VALUES (S.Col1, S.Col2, S.Col3, S.Count, S.timestamp);
lưu ý: khi tôi viết câu hỏi này đầu tiên tôi gọi là bảng AAA
và BBB
. Tôi chỉnh sửa và thay đổi tên của AAA
để SOURCE
VÀ BBB
để DESTINATION
cho rõ ràng
Trường hợp sử dụng tuyệt vời cho lệnh MERGE. –
Câu trả lời hay! Tôi đã không nhận thức được MERGE, nhưng tôi vẫn đang sử dụng năm 2005 (trong một vài tuần nữa), tôi chắc chắn sẽ sử dụng nó trong tương lai. – richardtallent
Tôi đang cố gắng tìm ra cách sử dụng nó. ví dụ trong tài liệu yêu cầu bạn xem qua các phần tử trong bảng AAA. Tôi nghĩ rằng việc sử dụng quyền chọn nên tránh điều đó. – Barka