2017-07-19 6 views
0

J'ai une table 'mytable' et elle a la structure et les exemples de données suivants.MySQL - Mise à jour en utilisant une valeur de la sous-requête sur la même table

+----+------------+--------------------+ 
| id | name  | password   | 
+----+------------+--------------------+ 
| 1 | Raj  | somepwd   | 
+----+------------+--------------------+ 
| 2 | Rao  | abcdefg   | 
+----+------------+--------------------+ 
| 3 | Uday  |     | 
+----+------------+--------------------+ 

Je veux mettre à jour le mot de passe d'Uday avec le mot de passe de Rao. Quelqu'un peut-il m'aider avec la requête de mise à jour de MySQL pour résoudre ce problème.

Merci d'avance.

Répondre

0

Vous devez utiliser cette requête.

update mytable as t1, 
(select id,`password` from mytable where name = 'Rao') as t2 
set t1.password = t2.password 
where t1.id = 3 
0
UPDATE mytable 
set 
    password=(SELECT password FROM mytable WHERE name LIKE 'Rao') 
WHERE name LIKE 'Uday' 
+0

Cette requête renverra une erreur: 'Code d'erreur: 1093 Vous ne pouvez pas spécifier la table cible « matable » pour la mise à jour dans FROM clause' –

+0

Oui, mais il fonctionne sur MS SQL pas sur MySQL –

+0

Bien que ce Le code peut répondre à la question, en fournissant un contexte supplémentaire sur la façon dont et/ou pourquoi il résout le problème, ce qui améliorerait la valeur à long terme de la réponse. –

0
update mytable set password = (select password from mytable where id=2) where id=3 

ou vous pouvez utiliser l'auto rejoindre

update mytable t1 join mytable t2 on t1.id = 3 set t1.password = t2.password 
where t2.id=2 

Remarque: Utilisez id au lieu d'autres colonnes

0

Je suis la solution, fait surtout des solutions me donnant l'erreur.

UPDATE mytable as aa, (SELECT password FROM mytable where id =2) as bb SET aa.password=bb.password where aa.id=3;