ANSI SQL có IS [NOT] DISTINCT FROM
cấu trúc chưa được triển khai trong SQL Server ( Yêu cầu kết nối
).
Có thể mô phỏng chức năng này
trong SQL Server sử dụng EXCEPT
/ INTERSECT
tuy nhiên. Cả hai điều này đều xử lý NULL
như bình đẳng trong các so sánh. Bạn đang muốn tìm các hàng mà các cột chính giống nhau nhưng các cột giá trị khác nhau. Vì vậy, điều này nên làm điều đó.
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)