ANSI SQL har IS [NOT] DISTINCT FROM
konstruktion, der endnu ikke er implementeret i SQL Server (Forbindelsesanmodning
).
Det er muligt at simulere denne funktionalitet
i SQL Server ved hjælp af EXCEPT
/INTERSECT
imidlertid. Begge disse behandler NULL
lige i sammenligninger. Du ønsker at finde rækker, hvor nøglekolonnerne er de samme, men værdikolonnerne er forskellige. Så dette burde gøre det.
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)