Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm thế nào để so sánh dữ liệu giữa hai bảng trong các cơ sở dữ liệu khác nhau bằng 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

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 !!!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các lựa chọn thay thế SQL Server Management Studio để duyệt / chỉnh sửa bảng và chạy các truy vấn

  2. Khóa chính tổng hợp so với cột ID bổ sung?

  3. Cú pháp và đóng gói INNER JOIN kỳ lạ

  4. Cách tốt nhất để tìm nạp hàng loạt bản ghi từ SQL Server là gì

  5. Truy xuất> 901 hàng từ máy chủ được liên kết SQL Server 2008 với Active Directory