SQL Update: Datensatz ergänzen mit einem Wert aus einer anderen Tabelle

Last Updated on

Aufbau der Tabellen
Aufbau der Tabellen
In einer Datenbank sind 2 Tabellen vorhanden: Account und AccountOld. In der Tabelle Account wird mit einer neuen Struktur gearbeitet, die von der Tabelle AccountOld abweicht. In der alten Tabelle ist die Gruppenzugehörigkeit gespeichert, welche jetzt doch noch übernommen werden soll.

Inhalt der Tabelle Account
Inhalt der Tabelle AccountOld

Um nun den Wert der Gruppenzugehörigkeit aus der Tabelle AccountOld zu übernehmen, haben wir folgende Möglichkeiten für die verschiedenen Datenbanksysteme:

MS SQL-Server
Beim Microsoft SQL-Server können wir dies auf 2 verschiedene Arten erledigen. Mit Hilfe einer Unterabfrage (Sub-Select) oder mit einem INNER-JOIN. Aus meiner Sicht ist jedoch die Variante mit dem INNER-JOIN zu bevorzugen.

Mit einem Sub-Select:

UPDATE Account SET Account.GroupID = (SELECT AccountOld.GroupID 
FROM AccountOLD WHERE Account.Name = AccountOld.Name)

Mit einem INNER JOIN:

UPDATE ACCOUNT SET Account.GroupID = AccountOld.GroupID 
FROM Account INNER JOIN AccountOLD ON Account.Name = AccountOld.Name

SQLite
Bei der SQLite DB funktioniert es nur mit Hilfe eines Sub-Select, da in einem Update-Statement kein FROM oder INNER-JOIN erlaubt ist.

Mit einem Sub-Select:

UPDATE Account SET GroupID = (SELECT AccountOld.GroupID 
FROM AccountOLD WHERE Account.Name = AccountOld.Name)

Resultat des Update-Befehl

Die Tabelle Account nach dem Update-Befehl

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.