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
プレ>注:「調整された」ソリューションまたはリファクタリングを開発する場合、REFERERCE と同じ結果が得られる大きなテーブルを比較するには長い時間がかかる場合があります。
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 からの定数値」が表示され、次のチェックの時間をさらに節約できます!!!