Sonia, pour expliquer un peu plus :
AND nom2=(SELECT nom1 FROM tab1)
Ce n'est pas bon : Le sous SELECT va ramener plusieurs lignes, Tu ne peux pas dire qu'un champ = un ensemble de valeur.
Donc tu auras une erreur (subquery return more than one row)
Dans ce cas là, un IN suffit
1 2 3 4
| UPDATE tab2
SET adresse2='A2' , num2='N2'
WHERE adresse2='A1' AND num2='N2'
AND nom2 IN (SELECT nom1 FROM tab1) |
Mais tu peux avoir des problèmes de lenteurs si tab1 contient beaucoup de lignes, et dans ce cas là, il vaut mieux passer par un EXISTS (comme la requête de Salim)
Partager