ANSI SQL heeft de IS [NOT] DISTINCT FROM constructie die nog niet is geïmplementeerd in SQL Server (Verbindingsverzoek
).
Het is mogelijk om simuleer deze functionaliteit
in SQL Server met EXCEPT /INTERSECT echter. Beide behandelen NULL als gelijk in vergelijkingen. U wilt rijen vinden waar de sleutelkolommen hetzelfde zijn, maar de waardekolommen verschillen. Dus dit zou het moeten doen.
SELECT *
FROM SourceTable S
JOIN DestinationTable D
ON S.Key1 = D.Key1
/*Join the key columns on equality*/
AND NOT EXISTS (SELECT S.Key2,
S.Key3
EXCEPT
SELECT D.Key2,
D.Key3)
/*and the value columns on unequality*/
AND NOT EXISTS (SELECT S.Value1,
S.Value2
INTERSECT
SELECT D.Value1,
D.Value2)