Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да сравняваме данни между две таблици в различни бази данни с помощта на Sql Server 2008?

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“, които да въведете, за да спестите още повече време за следваща проверка!!!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да избегнем грешката при деление на нула в SQL?

  2. Текстът е съкратен или един или повече знаци не са съвпадали в целевата кодова страница при импортиране от Excel файл

  3. Как да премахна неразбиващи интервали от колона в SQL сървър?

  4. Разбиране на група по клауза в SQL Server - SQL Server / TSQL урок, част 130

  5. Как да съхранявате пароли в базата данни сигурно?