313 votes

colonne de mise à jour de MySQL avec la valeur d’une autre table

J'ai deux tables qui ressemblent toutes les deux

 id  name  value
===================
1   Joe     22
2   Derk    30
 

Je dois copier la valeur de value de tableA à tableB selon le nom du chèque dans chaque tableau.

Des conseils pour cette déclaration UPDATE ?

580voto

RafaSashi Points 1492

En plus de cette réponse, si vous devez modifier t1.value en fonction de t2.value de manière dynamique, vous pouvez le faire par exemple:

 UPDATE tableB
INNER JOIN tableA ON tableB.name = tableA.name
SET tableB.value = IF(tableA.value > 0, tableA.value, tableB.value)
WHERE tableA.name = 'Joe'
 

208voto

John Woo Points 132738

vous devez joindre les deux tables:

Par exemple, vous voulez copier la valeur de name de la tableA dans tableB où ils ont le même ID

 UPDATE tableB t1 
        INNER JOIN tableA t2 
             ON t1.id = t2.id
SET t1.name = t2.name 
WHERE t2.name = 'Joe'
 

MISE À JOUR 1

 UPDATE tableB t1 
        INNER JOIN tableA t2 
             ON t1.id = t2.id
SET t1.name = t2.name 
 

MISE À JOUR 2

 UPDATE tableB t1 
        INNER JOIN tableA t2 
             ON t1.name = t2.name
SET t1.value = t2.value
 

118voto

jedanput Points 351

La deuxième possibilité est,

 UPDATE TableB 
SET TableB.value = (
    SELECT TableA.value 
    FROM TableA
    WHERE TableA.name = TableB.name
);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X