Ich habe folgende Tabellen und Werte:
Table1
------------------------
ID | Value
------------------------
2 | asdf
4 | fdsa
5 | aaaa
Table2
------------------------
ID | Value
------------------------
2 | bbbb
4 | bbbb
5 | bbbb
Ich möchte alle Werte in Tabelle2 mit den Werten in Tabelle1 mit ihren jeweiligen IDs aktualisieren.
Gibt es eine Möglichkeit, dies mit einer einfachen SQL-Abfrage zu tun?
Führen Sie eine Auswahl aus, um sicherzustellen, dass es Ihren Wünschen entspricht
SELECT t1.value AS NEWVALUEFROMTABLE1,t2.value AS OLDVALUETABLE2,*
FROM Table2 t2
INNER JOIN Table1 t1 on t1.ID = t2.ID
Aktualisieren
UPDATE Table2
SET Value = t1.Value
FROM Table2 t2
INNER JOIN Table1 t1 on t1.ID = t2.ID
Erwägen Sie auch die Verwendung von BEGIN TRAN
, damit Sie ihn bei Bedarf zurücksetzen können. Stellen Sie jedoch sicher, dass Sie COMMIT
verwenden, wenn Sie zufrieden sind.
Wenn Sie in beiden Tabellen IDs haben, funktioniert Folgendes:
update table2
set value = (select value from table1 where table1.id = table2.id)
Vielleicht ist ein besserer Ansatz ein Join:
update table2
set value = table1.value
from table1
where table1.id = table2.id
Beachten Sie, dass diese Syntax in SQL Server funktioniert, sich aber in anderen Datenbanken unterscheiden kann.
Sie können einen Alias verwenden, um die Abfrage zu verbessern:
UPDATE t1
SET t1.Value = t2.Value
FROM table1 AS t1
INNER JOIN
table2 AS t2
ON t1.ID = t2.ID
Keine der obigen Antworten funktionierte für mich in MySQL , jedoch hat die folgende Abfrage funktioniert
UPDATE
Table1 t1
JOIN
Table2 t2 ON t1.ID=t2.ID
SET
t1.value =t2.value
WHERE
...
Ich habe dieses auf MySQL, MS Access und SQL Server verwendet. Die ID-Felder sind die Felder, in denen die Tabellen übereinstimmen, nicht notwendigerweise der Primärindex.
UPDATE DestTable INNER JOIN SourceTable ON DestTable.idField = SourceTable.idField SET DestTable.Field1 = SourceTable.Field1, DestTable.Field2 = SourceTable.Field2...