SQL Server da iki tablo arasındaki farkların ve benzerliklerin bulunabilmesi için EXCEPT ve INTERSECT kelimeleri kullanılır, aynı işlemi yapabilmek için join ifadelerindende faydalanılabilir. Bu makalemizde EXCEPT ve INTERSECT nasıl karşılaştırma yapılacağın göstereceğiz.
EXCEPT kullanımı:
SELECT
Etiket='Tablo1 de bulunan fakat Tablo2 de bulunmayan kayıtlar', *
FROM
(
SELECT * FROM Tablo1
EXCEPT
SELECT * FROM Tablo2
) x
UNION ALL
SELECT
Etiket='Tablo2 de bulunan fakat Tablo1 de bulunmayan kayıtlar', *
FROM
(
SELECT * FROM Tablo2
EXCEPT
SELECT * FROM Tablo1
) y
INTERSECT kullanımı:
Her iki tablodada ortak olarak bulunan kayıtları bulalımSELECT * FROM Tablo1 INTERSECT SELECT * FROM Tablo2
-- Sonuç : (10 row(s) affected)
Tablolar arasındaki kayıt farklılıklarını bulmak için NOT EXIST veya LEFT JOIN ifadelerinide kullanabiliriz
NOT EXIST Yöntemi
SELECT * FROM Tablo2 p1
WHERE NOT EXISTS(
SELECT * FROM Tablo1 p2
WHERE p2.ID = p1.ID)
LEFT JOIN Yöntemi
SELECT * FROM Tablo2 p1
LEFT OUTER JOIN Tablo1 p2
ON p2.ID = p1.ID
WHERE p2.ID IS NULL