2012-09-12 13 views
37

Ho un due tabelle,MySQL tabella di aggiornamento sulla base di un altro tabelle dei valori

Qui è la mia prima tavola,

ID  SUBST_ID  CREATED_ID 
1  031938   TEST123 
2  930111   COOL123 
3  000391   THIS109 
4  039301   BRO1011 
5  123456   COOL938 
...  ...    ... 

Questa è la mia seconda tabella,

ID  SERIAL_ID  BRANCH_ID 
1  039301   NULL 
2  000391   NULL 
3  123456   NULL 
...  ...    ... 

ho bisogno di alcuni come aggiornare tutte le righe all'interno della mia seconda tabella utilizzando i dati dalla mia prima tabella.

Avrebbe bisogno di fare tutto questo in un'unica query di aggiornamento.

Sia SUBST_ID che SERIAL_ID corrispondono, è necessario prendere l'id_datificato dalla prima tabella e inserirlo nella seconda tabella.

Quindi la seconda tabella sarebbe diventato il seguente,

ID  SERIAL_ID  BRANCH_ID 
1  039301   BRO1011 
2  000391   THIS109 
3  123456   COOL938 
...  ...    ... 

Grazie per il vostro aiuto e la guida.

risposta

79
UPDATE TABLE2 
     JOIN TABLE1 
     ON TABLE2.SERIAL_ID = TABLE1.SUBST_ID 
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID; 
2

penso che questo dovrebbe funzionare

UPDATE secondTable 
JOIN firsTable ON secondTable.SERIAL_ID = firsTable.SUBST_ID 
SET BRANCH_ID = CREATED_ID 
13

Oltre alla risposta di Tom, se avete bisogno di ripetere l'operazione di frequente e vogliono risparmiare tempo si può fare:

UPDATE TABLE1 
     JOIN TABLE2 
     ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID 
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID 
WHERE TABLE2.BRANCH_ID IS NULL 
1
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=''; 
+0

Potresti per favore elaborare più la tua risposta aggiungendo un po 'più di descrizione della soluzione che fornisci? – abarisone

+0

usando join su subset_Id e Serial_Id otterrete un Result set. E quel set di risultati conterrà l'id creato..ora Concentrate su query dopo SET ci stiamo effettivamente assegnando o fornendo valori da created_Id a Branch_Id .... spero che capiate. . :) –

0

Utilizzo di INNER JOIN :

UPDATE TABLE1 
INNER JOIN TABLE2 ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID 
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID; 

Un'altra soluzione alternativa come di seguito: Qui sto usando WHERE clausola invece di JOIN

UPDATE 
    TABLE1, 
    TABLE2 
WHERE 
    TABLE1.SUBST_ID = TABLE2.SERIAL_ID 
SET 
    TABLE2.BRANCH_ID = TABLE1.CREATED_ID; 
0

È possibile utilizzare anche questo:

update TABLE1 set BRANCH_ID = (select BRANCH_ID from TABLE2 where TABLE1.SUBST_ID = TABLE2.SERIAL_ID) 

ma con la mia esperienza posso dire che in questo modo è così lento e non lo consiglio!

Problemi correlati