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.
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