SQL atjaunināšana no vienas tabulas uz citu, pamatojoties uz ID atbilstību

Man ir datu bāze ar kontu numuriem un karšu numuriem. Es tos pielīdzinu datnei, lai atjauninātu jebkuru kartes numuru konta numuram, tādējādi es strādāju tikai ar konta numuriem.

Es izveidoju skatījumu, kas sasaista tabulu ar kontu/karšu datubāzi, lai atgrieztu Tabulas ID un saistīto konta numuru, un tagad man jāatjaunina tie ieraksti, kuros ID sakrīt ar konta numuru.

Tā ir Sales_Import tabula, kurā jāatjaunina konta numura lauks:

LeadID  AccountNumber
147         5807811235
150         5807811326
185         7006100100007267039

Un šī ir RetrieveAccountNumber tabula, no kuras man ir jāatjaunina:

LeadID  AccountNumber
147         7006100100007266957
150         7006100100007267039

Es izmēģināju tālāk minēto, bet pagaidām nekas neizdodas:

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

Tas atjaunina kartes numurus uz konta numuriem, bet konta numuri tiek aizstāti ar NULL.

Es uzskatu, ka UPDATE FROM ar JOIN palīdzēs:

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

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

Šķiet, ka jūs izmantojat MSSQL, tad, ja es pareizi atceros, tas tiek darīts šādi:

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

Paldies par atbildēm. Es atradu risinājumu 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)  
Komentāri (3)