Это проблема двухстороннего сопоставления с максимальной стоимостью. Классический способ его решения - использовать венгерский алгоритм .
В принципе, у вас есть двудольный граф: левый набор - это строки, а правый набор - это столбцы. Каждое ребро из строки i
в столбец j
имеет стоимость matrix[i, j]
. Найдите соответствие, которое максимизирует затраты.
Я верю UPDATE FROM
с JOIN
, поможет:
UPDATE
Sales_Import
SET
Sales_Import.AccountNumber = RAN.AccountNumber
FROM
Sales_Import SI
INNER JOIN
RetrieveAccountNumber RAN
ON
SI.LeadID = RAN.LeadID;
UPDATE
Sales_Import SI,
RetrieveAccountNumber RAN
SET
SI.AccountNumber = RAN.AccountNumber
WHERE
SI.LeadID = RAN.LeadID;
Спасибо за ответы. Я нашел решение tho.
UPDATE Sales_Import
SET AccountNumber = (SELECT RetrieveAccountNumber.AccountNumber
FROM RetrieveAccountNumber
WHERE Sales_Import.leadid =RetrieveAccountNumber.LeadID)
WHERE Sales_Import.leadid = (SELECT RetrieveAccountNumber.LeadID
FROM RetrieveAccountNumber
WHERE Sales_Import.leadid = RetrieveAccountNumber.LeadID)
Кажется, что Вы используете MSSQL, тогда, если я помню правильно, он сделан как это:
UPDATE [Sales_Lead].[dbo].[Sales_Import] SET [AccountNumber] =
RetrieveAccountNumber.AccountNumber
FROM RetrieveAccountNumber
WHERE [Sales_Lead].[dbo].[Sales_Import].LeadID = RetrieveAccountNumber.LeadID
У меня была такая же проблема с foo.new
, установленным в null
для строк foo
, у которых не было соответствующего ключа в бар
. Я сделал что-то подобное в Oracle:
update foo set foo.new = (select bar.new from bar where foo.key = bar.key) where exists (select 1 from bar where foo.key = bar.key)
Простой способ скопировать контент из одной таблицы на другую следующую:
UPDATE table2
SET table2.col1 = table1.col1,
table2.col2 = table1.col2,
...
FROM table1, table2
WHERE table1.memberid = table2.memberid
Вы также можете добавить условие, чтобы получить определенные данные копироваться.