Actualización SQL de una Tabla a otra basada en una coincidencia de ID

Tengo una base de datos con números de cuenta y números de tarjeta. Los relaciono con un archivo para actualizar cualquier número de tarjeta con el número de cuenta, de modo que sólo trabajo con números de cuenta.

He creado una vista que enlaza la tabla con la base de datos de cuentas/tarjetas para devolver el Identificador de la tabla y el número de cuenta relacionado, y ahora necesito actualizar aquellos registros en los que el identificador coincide con el número de cuenta.

Esta es la tabla Sales_Import, donde el campo account number necesita ser actualizado:

LeadID  AccountNumber
147         5807811235
150         5807811326
185         7006100100007267039

Y esta es la tabla RetrieveAccountNumber, desde donde necesito actualizar:

LeadID  AccountNumber
147         7006100100007266957
150         7006100100007267039

He probado lo siguiente, pero no ha habido suerte hasta ahora:

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

Actualiza los números de tarjeta a números de cuenta, pero los números de cuenta se sustituyen por NULL.

Creo que una "actualización desde" con un "ingreso" ayudará:

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

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

Parece que estás usando MSSQL, entonces, si no recuerdo mal, se hace así:

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

Gracias por las respuestas. Sin embargo, he encontrado una solución.

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)  
Comentarios (3)