This article is half-done without your Comment! *** Please share your thoughts via Comment ***
In this post, I am showing few important commands for finding all the mismatch rows from two tables of SQL Server.
Many times, I found that my coworkers are finding mismatch rows using NOT IN and EXISTS operators which are not advisable for the big size of the table.
Please do not use NOT IN and EXISTS operators for finding mismatch rows from the different tables.
SQL Server has an excellent Set Operators which is EXCEPT.
The EXCEPT returns distinct rows from the left table that are not outputted from the right table.
Below is a small demonstration:
First create two test tables, one is Source and second is Destination:
1 2 3 4 5 6 7 8 9 10 11 12 |
CREATE TABLE tbl_SourceData ( ID INT IDENTITY(1,1) ,Name VARCHAR (250) ) CREATE TABLE tbl_DestinationData ( ID INT IDENTITY(1,1) ,Name VARCHAR (250) ) GO |
Insert sample data into both tables with different values:
1 2 3 4 5 6 7 8 |
INSERT INTO tbl_SourceData(Name) VALUES ('Anvesh'),('Alia'),('Antony'),('Neevan') ,('Martin'),('Benny'),('Arkush') INSERT INTO tbl_DestinationData(Name) VALUES ('Anvesh'),('Roy'),('Antony'),('Neevan') ,('Martin'),('Benny'),('Arkush') GO |
You can find that Name with “Alia” which is not available in the Destination Table.
Find mismatch rows using EXCEPT:
1 2 3 4 5 6 7 8 9 |
SELECT *FROM tbl_SourceData EXCEPT SELECT *FROM tbl_DestinationData GO -----Result ID Name --------- ---------- 2 Alia |