私はUserId、ItemId、およびSomeDataを持つターゲットテーブルを持っています。 ItemIdが見つからないことに基づいてターゲットを更新するために使用するソーステーブルがあります。2つの列を一致させる必要がある場合のSQLマージ方法
例で説明たぶん簡単に...
これは、ターゲットと既存のデータです:
UserId ItemId SomeData
1 1 x
2 2 y
2 3 z
そして私は、特定のユーザーのためのいくつかのアイテムIDを保持している別の一時的なソーステーブルを持っています。そのUserIdにすでにそのItemIdがある場合は、無視します。そこになければ、それを加えてください。私は期待してい
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
結果セットは、このようなものです:
UserId ItemId SomeData
1 1 x
2 2 y
2 3 z
1 2 a <--- added
1 3 b <--- added
私は行方不明のItemIdのレコードを挿入することができるようにmergeコマンド内のテーブルを結合するために適切な方法で苦労していますユーザー。
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' –