Присоединение по имени - не идеальный выбор, но это должно работать:
UPDATE custpurchase
SET id = (SELECT c.id
FROM CUSTID c
WHERE c.name = custpurchase.name)
Предостережение заключается в том, что если совпадения не найдено, значение, которое будет пытаться вставить, будет NULL
. Предполагая, что столбец id
не разрешит NULL
, но допустит повторяющиеся значения:
UPDATE custpurchase
SET id = (SELECT COALESCE(c.id, -99)
FROM CUSTID c
WHERE c.name = custpurchase.name)
COALESCE
вернет первое ненулевое значение. Если установить значение, превышающее то, что вы обычно ожидаете, вам будет легче изолировать такие записи и обращаться с ними надлежащим образом.
В противном случае вам придется выполнить обновление «от руки», по имени по имени, чтобы исправить экземпляры, которые SQL не смог.