Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल सर्वर 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

नोट:"ट्यून" समाधान या रिफैक्टरिग विकसित करते समय बड़ी तालिका की तुलना करने में लंबा समय लग सकता है, जो संदर्भ के समान परिणाम देगा - पहले सरल पैरामीटर जांचना बुद्धिमानी हो सकती है:जैसे

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. SQL सर्वर में उच्च गंभीरता त्रुटियों से निपटना

  3. कर्सर का उपयोग किये बिना टीएसक्यूएल में टेबल वैरिएबल के माध्यम से लूप करने का कोई तरीका है?

  4. बायां बाहरी जॉइन बाएं तालिका में मौजूद से अधिक रिकॉर्ड कैसे लौटा सकता है?

  5. SQL Server 2008 में टेक्स्ट स्ट्रिंग्स को ट्रिम करना