web-dev-qa-db-fra.com

MySQL - Mettre à jour les valeurs en fonction de la sous-requête

disons que j'ai select, qui me renvoie de table1:

ID  Name
 1  Bob
 2  Alice
 3  Joe

Ensuite, je veux mettre à jour les valeurs dans une autre table en fonction de ce résultat:

UPDATE table2 SET Name = table1.Name WHERE ID = table1.ID

Comme je l'ai compris, je ne peux faire de sélection interne qu'en un seul endroit, comme:

UPDATE table2 SET Name = (select Name from table1) WHERE ...

Et je ne sais pas comment spécifier la condition OERE.

22
MasterClass

tout ce que vous devez faire est simplement de rejoindre les tables comme ceci.

UPDATE table2 t2
JOIN table1 t1 ON t1.id = t2.id
SET t2.name = t1.name;

RÉSULTATS AVEC JOIN

si vous êtes prêt à le faire avec une sélection, vous pouvez le faire comme ça.

UPDATE table2 t2,
(   SELECT Name, id 
    FROM table1 
) t1
SET t2.name = t1.name
WHERE t1.id = t2.id

RÉSULTATS DE SELECT

60
John Ruddell
 UPDATE table2
 SET name = (SELECT table1.Name FROM table1 WHERE table1.id = table2.id)
 WHERE apply_condition

EDIT: # 1

   UPDATE table2 t2, (SELECT id, name FROM table1) t1 SET t2.name = t1.name WHERE t1.id = t2.id

veuillez lire ceci lien , n autre

13
Rajib Ghosh