UserId, ItemId 및 SomeData가있는 대상 테이블이 있습니다. 누락 된 ItemId를 기반으로 대상을 업데이트하는 데 사용할 원본 테이블이 있습니다.두 개의 열이 일치해야하는 경우 SQL 병합 방법
예를 들어 설명 어쩌면 쉽게 ...
이 대상과 기존 데이터입니다 :
UserId ItemId SomeData
1 1 x
2 2 y
2 3 z
그리고 특정 사용자에 대한 몇 가지 항목 Id를 보유하고 다른 임시 소스 테이블을 가지고있다. 해당 UserId에 이미 해당 ItemId가 있으면 무시하십시오. 없으면 추가하십시오. 나는에 대한 누락 된 항목 Id의 레코드를 삽입 할 수 있도록 병합 명령을 내 테이블을 조인하는 적절한 방법과 사투를 벌인거야
UserId ItemId SomeData
1 1 x
2 2 y
2 3 z
1 2 a <--- added
1 3 b <--- added
을 : 내가 기대하고있어
UserId ItemId SomeData
1 1 x <--- this ItemId already exist for UserId=1, ignore
1 2 a <--- the next two ItemId don't exist for UserId=1, add them
1 3 b
결과 집합은 다음과 같이이다 사용자.
MERGE Target T
USING Source S
ON T.UserId = S.UserId --This doesn't get the right matches but neither does joining it by ItemId
WHEN NOT MATCHED
THEN
INSERT bah bah bah
어떻게하면됩니까?
만약'Userid'와'Itemid'에 관심이 있다면'ON' 섹션에 그것들을 모두 추가하십시오 :'T.UserId = S.UserId AND T.ItemID = S.ItemID' –