У меня есть таблица, которая содержит только два столбца - ListID и PersonID. Когда человек сливается с другим в системе, я должен был обновить все ссылки от «источника», чтобы ссылаться на «целевого» человека.Слияние контактов в таблице SQL без создания повторяющихся записей
В идеале, я хотел бы назвать что-то простое, как
UPDATE MailingListSubscription
SET PersonID = @DestPerson
WHERE PersonID = @SourcePerson
Однако, если человек уже существует в этой таблице с той же ListID как исходный человек, дубликат запись будет сделана. Как я могу выполнить это действие без создания дублированных записей? (ListID, PersonID - первичный ключ)
EDIT: используются несколько идентификаторов ListID. Если SourcePerson присваивается ListID 1, 2 и 3, а DestinationPerson назначается ListIDs 3 и 4, то конечный результат должен иметь четыре строки - DestinationPerson, назначенный ListID 1, 2, 3 и 4.
Лучшая производительность с использованием вместо – 2008-09-25 19:15:27
Написала оба в анализаторе запросов. Посмотрел планы исполнения. Показаны идентичные планы. «Exists» vs «in» не имеет значения. Индекс на PersonId имеет большое значение. – 2008-09-25 19:43:13