SQL update van een tabel naar een andere op basis van een ID match

Ik heb een database met rekeningnummers en kaartnummers. Ik match deze met een bestand om eventuele kaartnummers bij te werken aan het rekeningnummer, zodat ik alleen met rekeningnummers werk.

Ik heb een view gemaakt die de tabel linkt aan de account/card database om de Tabel ID en het bijbehorende rekeningnummer terug te geven, en nu moet ik die records updaten waar de ID overeenkomt met het rekeningnummer.

Dit is de Sales_Import tabel, waar het accountnummer veld moet worden bijgewerkt:

LeadID  AccountNumber
147         5807811235
150         5807811326
185         7006100100007267039

En dit is de RetrieveAccountNumber tabel, waar ik de update vandaan moet halen:

LeadID  AccountNumber
147         7006100100007266957
150         7006100100007267039

Ik heb het onderstaande geprobeerd, maar tot nu toe geen geluk:

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

Het update de kaart nummers naar rekeningnummers, maar de rekeningnummers worden vervangen door NULL

Ik denk dat een UPDATE FROM met een JOIN zal helpen:

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 en MariaDB

UPDATE
    Sales_Import SI,
    RetrieveAccountNumber RAN
SET
    SI.AccountNumber = RAN.AccountNumber
WHERE
    SI.LeadID = RAN.LeadID;
Commentaren (14)

Het lijkt erop dat je MSSQL gebruikt, dan, als ik het me goed herinner, gaat het als volgt:

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

Bedankt voor de reacties. Ik vond een oplossing 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)  
Commentaren (3)