web-dev-qa-db-fra.com

Syntaxe MySQL UPDATE avec plusieurs tables utilisant la clause WHERE

Cas:

Comment mettre à jour table1 avec des données de table2id est égal?

Problème:

Lorsque j'exécute l'instruction de mise à jour suivante, elle met à jour tous les enregistrements dans table1 (même là où le champ id dans table1 n'existe pas dans table2).

Comment puis-je utiliser la syntaxe de la table de mise à jour multiple, pour mettre à jour UNIQUEMENT les enregistrements dans table1 UNIQUEMENT là où le id est présent dans table2 et égal?

UPDATE table1,table2
SET table1.value=table2.value 
WHERE table2.id=table1.id

Merci d'avance.

14
Ben

voici la syntaxe correcte de UPDATE avec join in MySQL

UPDATE  table1 a
        INNER JOIN table2 b
            ON a.ID = b.ID
SET     a.value = b.value 
26
John Woo

[~ # ~] modifier [~ # ~] Pour MySql, ce sera

UPDATE table1 t1 INNER JOIN 
       table2 t2 ON t2.id = t1.id
   SET t1.value = t2.value 

sqlfiddle

La réponse d'origine était pour SQL Server

UPDATE table1
   SET table1.value = table2.value 
  FROM table1 INNER JOIN 
       table2 ON table2.id=table1.id

sqlfiddle

4
peterm

Vous pouvez essayer ceci:

UPDATE TABLE1
SET column_name = TABLE2.column_name
FROM TABLE1, TABLE2
WHERE TABLE1.id = TABLE2.id
2
Lingasamy Sakthivel
UPDATE table1
SET table1.value = (select table2.value 
WHERE table2.id=table1.id)
0
jmontross