Обновление SQL из одной таблицы в другую на основе совпадения идентификатора

Это проблема двухстороннего сопоставления с максимальной стоимостью. Классический способ его решения - использовать венгерский алгоритм .

В принципе, у вас есть двудольный граф: левый набор - это строки, а правый набор - это столбцы. Каждое ребро из строки i в столбец j имеет стоимость matrix[i, j]. Найдите соответствие, которое максимизирует затраты.

854
задан DineshDB 26 March 2018 в 09:45
поделиться

5 ответов

Я верю UPDATE FROM с JOIN, поможет:

SQL

UPDATE
    Sales_Import
SET
    Sales_Import.AccountNumber = RAN.AccountNumber
FROM
    Sales_Import SI
INNER JOIN
    RetrieveAccountNumber RAN
ON 
    SI.LeadID = RAN.LeadID;

MySQL мс и MariaDB

UPDATE
    Sales_Import SI,
    RetrieveAccountNumber RAN
SET
    SI.AccountNumber = RAN.AccountNumber
WHERE
    SI.LeadID = RAN.LeadID;
1268
ответ дан Mr. Polywhirl 26 March 2018 в 09:45
поделиться

Спасибо за ответы. Я нашел решение 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)  
17
ответ дан Martin Smith 26 March 2018 в 09:45
поделиться

Кажется, что Вы используете MSSQL, тогда, если я помню правильно, он сделан как это:

UPDATE [Sales_Lead].[dbo].[Sales_Import] SET [AccountNumber] = 
RetrieveAccountNumber.AccountNumber 
FROM RetrieveAccountNumber 
WHERE [Sales_Lead].[dbo].[Sales_Import].LeadID = RetrieveAccountNumber.LeadID
34
ответ дан Vinko Vrsalovic 26 March 2018 в 09:45
поделиться

У меня была такая же проблема с 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)
33
ответ дан 22 November 2019 в 21:06
поделиться

Простой способ скопировать контент из одной таблицы на другую следующую:

UPDATE table2 
SET table2.col1 = table1.col1, 
table2.col2 = table1.col2,
...
FROM table1, table2 
WHERE table1.memberid = table2.memberid

Вы также можете добавить условие, чтобы получить определенные данные копироваться.

279
ответ дан 22 November 2019 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: