0
A
답변
0
NOT EXISTS
을 사용하면 두 테이블에서 일치하지 않는 ID를 찾을 수 있으며이를 UNION ALL
으로 결합 할 수 있습니다.
쿼리
SELECT t1.[Id] FROM [table-1] t1
WHERE NOT EXISTS(
SELECT 1 FROM [table-2] t2
WHERE t1.[Id] = t2.[Id]
)
UNION ALL
SELECT t2.[Id] FROM [table-2] t2
WHERE NOT EXISTS(
SELECT 1 FROM [table-1] t1
WHERE t1.[Id] = t2.[Id]
);
0
타이 TOP 1 또 다른 방법과 OVER 수 :
SELECT TOP 1 WITH TIES *
FROM (
SELECT *
FROM [table-1]
UNION ALL
SELECT *
FROM [table-2]
) u
ORDER BY COUNT(*) OVER (PARTITION BY Id ORDER BY Id)
출력 :
Id name
D ...
E ...
F ...
G ...
H ...
I ...
J ...
K ...
COUNT(*) OVER (PARTITION BY Id ORDER BY Id)
Id
이 중복되면 1
을 고유 행에, >1
을 제공합니다. 이를 ORDER BY에 넣고 TOP 1 WITH TIES를 추가하면 최소 카운트로 Id
만을 남깁니다.
FULL OUTER 또 다른 방법은 가입 :
SELECT COALESCE(Id1,Id2) Id,
COALESCE(name1,name2) name
FROM (
SELECT t1.Id Id1,
t1.[name] name1,
t2.Id Id2,
t2.[name] name2
FROM [table-1] t1
FULL OUTER JOIN [table-2] t2
ON t1.Id = t2.Id
WHERE t1.Id IS NULL OR t2.ID IS NULL
) as t
같은 출력을 (다른 주문)