Aktualizace SQL z jedné tabulky do druhé na základě shody ID

Mám databázi s čísly účtů a čísly karet. Přiřadím je k souboru, abych mohl všechna čísla karet aktualizovat na čísla účtů, takže pracuji pouze s čísly účtů.

Vytvořil jsem pohled propojující tabulku s databází účtů/karty, který vrací ID tabulky a související číslo účtu, a nyní potřebuji aktualizovat ty záznamy, u nichž se ID shoduje s číslem účtu.

Jedná se o tabulku Sales_Import, kde je třeba aktualizovat pole číslo účtu:

LeadID  AccountNumber
147         5807811235
150         5807811326
185         7006100100007267039

A toto je tabulka RetrieveAccountNumber, odkud potřebuji provést aktualizaci:

LeadID  AccountNumber
147         7006100100007266957
150         7006100100007267039

Zkoušel jsem níže uvedené, ale zatím bez úspěchu:

UPDATE [Sales_Lead].[dbo].[Sales_Import] 
SET    [AccountNumber] = (SELECT RetrieveAccountNumber.AccountNumber 
                          FROM   RetrieveAccountNumber 
                          WHERE  [Sales_Lead].[dbo].[Sales_Import]. LeadID = 
                                                RetrieveAccountNumber.LeadID) 

Aktualizuje to čísla karet na čísla účtů, ale čísla účtů se nahradí NULL.

Věřím, že pomůže UPDATE FROM s JOIN:

MS SQL

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

MySQL a MariaDB

UPDATE
    Sales_Import SI,
    RetrieveAccountNumber RAN
SET
    SI.AccountNumber = RAN.AccountNumber
WHERE
    SI.LeadID = RAN.LeadID;
Komentáře (14)

Zdá se, že používáte MSSQL, pak, pokud si dobře pamatuji, se to dělá takto:

UPDATE [Sales_Lead].[dbo].[Sales_Import] SET [AccountNumber] = 
RetrieveAccountNumber.AccountNumber 
FROM RetrieveAccountNumber 
WHERE [Sales_Lead].[dbo].[Sales_Import].LeadID = RetrieveAccountNumber.LeadID
Komentáře (0)

Děkujeme za odpovědi. Našel jsem řešení.

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)  
Komentáře (3)