Pernahkan anda mempunyai kasus untuk mencari selisih 2 tabel pada Microsoft SQL Server atau Database lainnya? Maksudnya, anda memiliki 2 buah tabel, tabel satu dan tabel 2. Dimana tabel satu memiliki 10 records, sedangkan tabel 2 hanya memiliki 5 records saja. Nah bagaimana caranya untuk mengetahui record yang selisih tersebut? untuk itu silahkan dicoba cara berikut ini:
SELECT * FROM t1 WHERE NOT EXISTS (SELECT * FROM t2 WHERE t2.Id = t1.Id)
atau
SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.Id = t2.Id WHERE t2.Id IS NULL
Jika primary key anda lebih dari satu, bisa juga pakai ini:
SELECT Id, Col1 FROM t1 WHERE NOT EXISTS
(SELECT 1 FROM t2 WHERE t1.Id = t2.Id AND Col1.t1 = Col2.t2)
Untuk anda pemakai SQL Server 2005 atau lebih, bisa pakai ini:
SELECT Id, Col1 FROM t1 EXCEPT SELECT Id, Col1 FROM t2
Untuk mencari record dimana berada pada sumber tetapi tidak pada target tabel atau sebaliknya.
SELECT * FROM (SELECT Id, Col1 FROM t1, 'old'
UNION ALL
SELECT Id, Col1 FROM t2, 'new') t
ORDER BY Id
Terimakasih, semoga bermanfaat.
SELECT * FROM t1 WHERE NOT EXISTS (SELECT * FROM t2 WHERE t2.Id = t1.Id)
atau
SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.Id = t2.Id WHERE t2.Id IS NULL
Jika primary key anda lebih dari satu, bisa juga pakai ini:
SELECT Id, Col1 FROM t1 WHERE NOT EXISTS
(SELECT 1 FROM t2 WHERE t1.Id = t2.Id AND Col1.t1 = Col2.t2)
Untuk anda pemakai SQL Server 2005 atau lebih, bisa pakai ini:
SELECT Id, Col1 FROM t1 EXCEPT SELECT Id, Col1 FROM t2
Untuk mencari record dimana berada pada sumber tetapi tidak pada target tabel atau sebaliknya.
SELECT * FROM (SELECT Id, Col1 FROM t1, 'old'
UNION ALL
SELECT Id, Col1 FROM t2, 'new') t
ORDER BY Id
Terimakasih, semoga bermanfaat.
Comments
Post a Comment