select *
from (
select 'T1' T, *
from DB1.dbo.Table
except
select 'T2' T, *
from DB2.dbo.Table
) as T
union all
select *
from (
select 'T2' T, *
from DB2.dbo.Table
except
select 'T1' T, *
from DB1.dbo.Table
) as T
ORDER BY 2,3,4, ..., 1 -- make T1 and T2 to be close in output 2,3,4 are UNIQUE KEY SEGMENTS
Mã kiểm tra:
declare @T1 table (ID int)
declare @T2 table (ID int)
insert into @T1 values(1),(2)
insert into @T2 values(2),(3)
select *
from (
select *
from @T1
except
select *
from @T2
) as T
union all
select *
from (
select *
from @T2
except
select *
from @T1
) as T
Kết quả:
ID
-----------
1
3
Lưu ý:Có thể mất nhiều thời gian để so sánh bảng lớn, khi phát triển giải pháp "điều chỉnh" hoặc refactorig, sẽ cho kết quả tương tự như TÀI LIỆU THAM KHẢO - có thể khôn ngoan trước tiên là chekc các thông số đơn giản:như
select count(t.*) from (
select count(*) c0, SUM(BINARY_CHECKSUM(*)%1000000) c1 FROM T_REF_TABLE
-- select 12345 c0, -214365454 c1 -- constant values FROM T_REF_TABLE
except
select count(*) , SUM(BINARY_CHECKSUM(*)%1000000) FROM T_WORK_COPY
) t
Khi cái này trống, bạn có thể có mọi thứ trong tầm kiểm soát và có thể bạn có thể sửa đổi khi thất bại, bạn sẽ thấy "giá trị không đổi FROM T_REF" thành isert để tiết kiệm nhiều thời gian hơn cho lần kiểm tra tiếp theo !!!