Прежде всего вам необходимо обновить TableA, прежде чем удалять дубликаты в TableB. Если нет, вы потеряете информацию.
После этого сделайте все дубликаты в таблице B равными в одном поле (скажем, LocationDescription)
Затем выберите один LocationID из всех. Допустим, идентификатор местоположения MIN.
После этого обновите tableA с этим MinID, а затем удалите дубликаты из TableB действительно простым способом (без NOT in).
Вот пример:
Asumming
TableA: Table B
Location ID LocationId LocationDescription
1 1 Neuquen
2 2 Cipolletti
3 3 Neuquen
4 4 Cipolletti
5 5 Neuquen
UPDATE TableA
SET locationID=TABLEBAUX.UniqueID
FROM TableA
INNER JOIN
(
SELECT UniqueID, LocationID
FROM
(SELECT MIN(LocationID) as UniqueID,LocationDescription
FROM TableB
GROUP BY LocationDescription) TEMP
INNER JOIN TableB
ON TEMP.LocationDescription=TABLEB.LocationDescription) TABLEBAUX
ON TableA.LocationID=TABLEBAUX.LocationID
DELETE FROM TableB
WHERE LocationID NOT in (SELECT LocationID FROM TABLEA)
После этого вы получите это:
TableA: Table B
Location ID LocationId LocationDescription
1 1 Neuquen
2 2 Cipolletti
1
2
1