Aggiornamento SQL da una tabella a un'altra in base a una corrispondenza di ID

Ho un database con numeri di conto e numeri di carta. Li abbino ad un file per aggiornare qualsiasi numero di carta al numero di conto, in modo da lavorare solo con i numeri di conto.

Ho creato una vista che collega la tabella al database del conto/carta per restituire il Table ID e il relativo numero di conto, e ora ho bisogno di aggiornare quei record in cui l'ID corrisponde al numero di conto.

Questa è la tabella Sales_Import, dove il campo numero di conto deve essere aggiornato:

LeadID  AccountNumber
147         5807811235
150         5807811326
185         7006100100007267039

E questa è la tabella RetrieveAccountNumber, da cui devo aggiornare:

LeadID  AccountNumber
147         7006100100007266957
150         7006100100007267039

Ho provato il seguente, ma finora nessuna fortuna:

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

Aggiorna i numeri di carta ai numeri di conto, ma i numeri di conto vengono sostituiti da NULL.

Credo che un UPDATE FROM con un JOIN aiuterà:

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

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

Sembra che tu stia usando MSSQL, quindi, se ricordo bene, si fa così:

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

Grazie per le risposte. Ho trovato una soluzione 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)  
Commentari (3)