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
टेस्ट कोड:
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
परिणाम:
ID
-----------
1
3
नोट:"ट्यून" समाधान या रिफैक्टरिग विकसित करते समय बड़ी तालिका की तुलना करने में लंबा समय लग सकता है, जो संदर्भ के समान परिणाम देगा - पहले सरल पैरामीटर जांचना बुद्धिमानी हो सकती है:जैसे
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
जब यह खाली होता है, तो आपके पास शायद चीजें नियंत्रण में होती हैं, और हो सकता है कि आप विफल होने पर संशोधित कर सकें, आपको अगली जांच के लिए और भी अधिक समय बचाने के लिए "T_REF से निरंतर मान" दिखाई देगा !!!