SQL Server Tips
How to compare two tables
Sample SQL statements to compare data in two tables with identical structure.
(These statements work for MS SQL Server, as well as for many other databases.)
To find records that exist in the source table but not in the target table:
SELECT * FROM t1 WHERE NOT EXISTS (SELECT * FROM t2 WHERE t2.Id = t1.Id)
or
SELECT * FROM t1 LEFT OUTER JOIN T2 on t1.Id = t2.Id WHERE t2.Id IS NULL
If the primary key consists of more than one column, you can modify the SQL statement:
SELECT Id, Col1 FROM t1 WHERE NOT EXISTS
(SELECT 1 FROM t2 WHERE t1.Id = t2.Id AND Col1.t1 = Col2.t2)
On SQL Server 2005 or newer you can use the EXCEPT operator:
SELECT Id, Col1 FROM t1 EXCEPT SELECT Id, Col1 FROM t2
To find records that exist in the source table but not in the target table, as well as records that exists in the target table but not in the source table:
SELECT * FROM (SELECT Id, Col1 FROM t1, 'old'
UNION ALL
SELECT Id, Col1 FROM t2, 'new') t
ORDER BY Id
Note: For tables with large amounts of data UNION statement may be very slow.
Testimonials
Our customers love SQL Server Comparison Tool
Adrian Mihalache
I have googled something like SQL Comparison Tool and I found some things including yours. I have tested few of them and I decided to buy yours (pretty good price). Nice tool to have, saves me a lot of time! Great job.
Richard A. Satin
This is a wonderful tool and I use it all the time. ... In the short time that I have been using it, the question is, how did I ever get along without.