SQL-Aktualisierung von einer Tabelle in eine andere auf der Grundlage einer ID-Übereinstimmung

Ich habe eine Datenbank mit "Kontonummern" und "Kartennummern". Ich gleiche diese mit einer Datei ab, um alle Kartennummern mit der Kontonummer zu "aktualisieren", so dass ich nur mit Kontonummern arbeite.

Ich habe eine Ansicht erstellt, die die Tabelle mit der Konto-/Kartendatenbank verknüpft, um die "Tabellen-ID" und die zugehörige Kontonummer zurückzugeben, und nun muss ich die Datensätze aktualisieren, bei denen die ID mit der Kontonummer übereinstimmt.

Dies ist die Tabelle "Sales_Import", in der das Feld "Kontonummer" aktualisiert werden muss:

LeadID  AccountNumber
147         5807811235
150         5807811326
185         7006100100007267039

Und dies ist die Tabelle RetrieveAccountNumber, von der aus ich aktualisieren muss:

LeadID  AccountNumber
147         7006100100007266957
150         7006100100007267039

Ich habe das Folgende versucht, aber bisher kein Glück gehabt:

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

Es aktualisiert die Kartennummern zu Kontonummern, aber die Kontonummern werden durch NULL ersetzt

Ich glaube, ein UPDATE FROM mit einem JOIN wird helfen:

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

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

Anscheinend verwenden Sie MSSQL, und wenn ich mich richtig erinnere, geht das so:

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

Danke für die Antworten. Ich habe eine Lösung gefunden, 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)  
Kommentare (3)