Posodobitev SQL iz ene tabele v drugo na podlagi ujemanja ID

Imam zbirko podatkov s številkami računov in številkami kartic. Te številke ujemam z datoteko, da bi vse številke kartic nadgradil s številko računa, tako da delam samo s številkami računov.

Ustvaril sem pogled, ki povezuje tabelo s podatkovno bazo računov/kartic in vrača ID tabele in ustrezno številko računa, zdaj pa moram posodobiti tiste zapise, pri katerih se ID ujema s številko računa.

To je tabela Sales_Import, kjer je treba posodobiti polje številka računa:

LeadID  AccountNumber
147         5807811235
150         5807811326
185         7006100100007267039

In to je tabela RetrieveAccountNumber, iz katere moram posodobiti polje:

LeadID  AccountNumber
147         7006100100007266957
150         7006100100007267039

Poskusil sem s spodnjimi navodili, vendar zaenkrat brez uspeha:

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

Številke kartic se posodobijo v številke računov, vendar se številke računov nadomestijo z NULL

Verjamem, da bo pomagala možnost UPDATE FROM z 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 in MariaDB

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

Zdi se, da uporabljate MSSQL, potem, če se prav spomnim, se to naredi tako:

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

Hvala za odgovore. Našel sem rešitev 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)  
Komentarji (3)