Ich habe zwei Tische,
Hier ist mein erster Tisch,
ID SUBST_ID CREATED_ID
1 031938 TEST123
2 930111 COOL123
3 000391 THIS109
4 039301 BRO1011
5 123456 COOL938
... ... ...
Dies ist mein zweiter Tisch,
ID SERIAL_ID BRANCH_ID
1 039301 NULL
2 000391 NULL
3 123456 NULL
... ... ...
Ich muss ein paar Schritte unternehmen, um alle Zeilen in meiner zweiten Tabelle mit Daten aus meiner ersten Tabelle zu aktualisieren.
Dies müsste in einer Aktualisierungsabfrage ausgeführt werden.
Sowohl SUBST_ID als auch SERIAL_ID müssen übereinstimmen. Sie müssen die erstellte_ID aus der ersten Tabelle übernehmen und in die zweite Tabelle einfügen.
Die zweite Tabelle würde also die folgende sein:
ID SERIAL_ID BRANCH_ID
1 039301 BRO1011
2 000391 THIS109
3 123456 COOL938
... ... ...
Vielen Dank für Ihre Hilfe und Anleitung.
UPDATE TABLE2
JOIN TABLE1
ON TABLE2.SERIAL_ID = TABLE1.SUBST_ID
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID;
Zusätzlich zu Toms Antwort, wenn Sie die Operation häufig wiederholen wollen und Zeit sparen wollen, können Sie
UPDATE TABLE1
JOIN TABLE2
ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID
WHERE TABLE2.BRANCH_ID IS NULL
Ich denke das sollte funktionieren
UPDATE secondTable
JOIN firsTable ON secondTable.SERIAL_ID = firsTable.SUBST_ID
SET BRANCH_ID = CREATED_ID
UPDATE TABLE2
JOIN TABLE1
ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID
WHERE TABLE2.BRANCH_ID IS NULL or TABLE2.BRANCH_ID='';
INNER JOIN
verwenden:
UPDATE TABLE1
INNER JOIN TABLE2 ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID;
Eine andere alternative Lösung wie folgt: Hier verwende ich WHERE
-Klausel anstelle von JOIN
UPDATE
TABLE1,
TABLE2
WHERE
TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET
TABLE2.BRANCH_ID = TABLE1.CREATED_ID;
Sie können dies auch verwenden:
update TABLE1 set BRANCH_ID = ( select BRANCH_ID from TABLE2 where TABLE1.SUBST_ID = TABLE2.SERIAL_ID)
aber mit meiner erfahrung kann ich sagen, dass dieser weg so langsam ist und ihn nicht weiterempfehlen!