У меня есть целевая таблица с идентификаторами UserId, ItemId и SomeData. У меня есть исходная таблица, которую я хочу использовать для обновления цели на основе отсутствующего ItemId.Как скомпилировать SQL, когда мне нужно совместить два столбца
Может быть проще объяснено в примере ...
Это цель и существующий данные:
UserId ItemId SomeData
1 1 x
2 2 y
2 3 z
И у меня есть еще один стол временного источника, который содержит некоторые ItemId для конкретного пользователя. Если этот 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 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' –