Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Step by Step: Đối chiếu 02 bảng dữ liệu với Checksum

Về tác giả:

Bài viết này được cung cấp bởi MVP [tên của bạn]. Microsoft chân thành cảm ơn những MVP đã chia xẻ những kinh nghiệm chuyên môn của mình với những người sử dụng khác. Bài viết này sẽ được đăng trên website hoặc blog của MVP sau đây. Nếu bạn muốn xem các bài viết khác được chia xẻ bởi MVP, vui lòng nháy chuột vào đây.
Những triệu chứng
Thông thường trong thực tế, chúng ta vẫn thường xuyên đối chiếu 02 đối tượng dữ liệu với nhau, các đối tượng dữ liệu có thể là 02 chuỗi hoặc 02 số hoặc 02 đối tượng thực thể, và cụ thể hơn là 02 bảng dữ liệu, trong phần này chúng ta sẽ giải quyết vấn đề đối chiếu 02 bảng dữ liệu để tìm ra các dòng dữ liệu giống và khác nhau trong 02 bảng.
Nguyên nhân
Riêng đối với bảng dữ liệu thì theo cách thông thường, chúng ta sẽ duyệt qua từng dòng và đối chiếu dữ liệu trên từng cột để tìm ra sự khác biệt, cụ thể trong trường hợp chúng ta cần lọc ra danh sách các record dữ liệu trong một bảng đang tồn tại hoặc chưa tồn tại trong một bảng dữ liệu khác.
Giải pháp
Để giải quyết các vấn đề như trên, chúng ta sử dụng tính năng checksum có trong SQL Server, để hiểu rõ hơn về tính năng này, chúng ta thực hiện bài thực hành dưới đây với một cơ sở dữ liệu mẫu với tên MyTest.

image

Tạo 02 bảng table1table2, mỗi table có 3 cột giá trị kiểu Integer
image

Tạo dữ liệu mẫu cho cả 2 bảng table1 table2

image

Thực hiện tạo một column thứ 4 có giá trị checksum từ 3 cột khác trong table

image

Truy vấn dữ liệu hiện tại trong cả 2 bảng table1 và table2

image

Từ kết quả trả về từ câu truy vấn trên, chúng ta nhận thấy được cột thứ 4 với giá trị checksum được tạo ra tự động dựa vào giá trị của 3 cột khác, và dễ dàng nhận thấy sự giống nhau ở dòng dữ liệu đầu tiên của cả hai bảng.

image

Truy vấn ra các dòng dữ liệu giống nhau ở cả 2 bảng

image

Kết quả trả về:

image

Truy vấn các dòng dữ liệu từ table1 có giá trị các cột khác với các dòng dữ liệu trong table2
image

Kết quả trả về:

image


Để biết thêm thông tin
Các bạn có thể tìm hiểu thêm cụ thể về Checksum trong Transact SQL tại: http://msdn.microsoft.com/en-us/library/ms189788.aspx

Tuyên bố Không chịu trách nhiệm Nội dung Giải pháp Cộng đồng

CÔNG TY MICROSOFT VÀ/HOẶC CÁC NHÀ CUNG CẤP CỦA HỌ KHÔNG BẢO ĐẢM VỀ TÍNH PHÙ HỢP, ĐỘ TIN CẬY HOẶC TÍNH CHÍNH XÁC CỦA THÔNG TIN VÀ HÌNH ẢNH LIÊN QUAN Ở ĐÂY. MỌI THÔNG TIN VÀ HÌNH ẢNH NHƯ VẬY ĐƯỢC CUNG CẤP “NHƯ NGUYÊN MẪU” MÀ KHÔNG CÓ BẤT KỲ BẢO ĐẢM NÀO. MICROSOFT VÀ/HOẶC CÁC NHÀ CUNG CẤP CỦA HỌ KHÔNG CHỊU TRÁCH NHIỆM ĐỐI VỚI MỌI BẢO ĐẢM VÀ ĐIỀU KIỆN VỀ THÔNG TIN VÀ HÌNH ẢNH LIÊN QUAN NÀY, BAO GỒM CẢ MỌI BẢO ĐẢM VÀ ĐIỀU KIỆN LIÊN QUAN VỀ TÍNH THƯƠNG MẠI, PHÙ HỢP CHO MỘT MỤC ĐÍCH ĐẶC BIỆT, NỖ LỰC CỦA CÔNG VIỆC, TƯ CÁCH VÀ CAM KẾT KHÔNG VI PHẠM. BẠN ĐỒNG Ý MỘT CÁCH CỤ THỂ LÀ KHÔNG CÓ TRƯỜNG HỢP NÀO MÀ MICROSOFT VÀ/HOẶC CÁC NHÀ CUNG CẤP CỦA HỌ BỊ RÀNG BUỘC VÀO BẤT KỲ THIỆT HẠI TRỰC TIẾP, GIÁN TIẾP, TRỪNG PHẠT, TÌNH CỜ, ĐẶC BIỆT, HỆ QUẢ HOẶC BẤT KỲ THIỆT HẠI DẠNG NÀO, BAO GỒM NHƯNG KHÔNG GIỚI HẠN THIỆT HẠI DO MẤT MÁT, DỮ LIỆU HOẶC LỢI ÍCH, XẢY RA HOẶC TRONG MỌI CÁCH LIÊN QUAN ĐẾN VIỆC SỬ DỤNG HOẶC KHÔNG THỂ SỬ DỤNG THÔNG TIN VÀ HÌNH ẢNH LIÊN QUAN CÓ Ở ĐÂY, DÙ LÀ DỰA VÀO HỢP ĐỒNG, LỖI GÂY THIỆT HẠI, SƠ SUẤT, NGHĨA VỤ PHÁP LÝ HOẶC BẤT KỲ CƠ SỞ NÀO KHÁC, NGAY CẢ NẾU MICROSOFT HOẶC BẤT KỲ NHÀ CUNG CẤP NÀO CỦA HỌ ĐÃ ĐƯỢC TƯ VẤN VỀ KHẢ NĂNG BỊ THIỆT HẠI.
Thuộc tính

ID Bài viết: 2584660 - Xem lại Lần cuối: 07/20/2011 09:13:00 - Bản sửa đổi: 1.0

Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 R2 Developer

  • kbprb kbtshoot kbstepbystep kbgraphxlink kbmvp KB2584660
Phản hồi