webentwicklung-frage-antwort-db.com.de

MySQL-Aktualisierungstabelle basierend auf einem anderen Tabellenwert

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.

49
verheesj
UPDATE TABLE2
       JOIN TABLE1
       ON TABLE2.SERIAL_ID = TABLE1.SUBST_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID;
105
Tom

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
15
RafaSashi

Ich denke das sollte funktionieren

UPDATE secondTable
JOIN firsTable ON secondTable.SERIAL_ID = firsTable.SUBST_ID
SET BRANCH_ID = CREATED_ID
3
Gonzalo.-
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='';
2
Mohammad Imran

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;
0
Faisal

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!

0
Abadis