Mysql
 sql >> Base de données >  >> RDS >> Mysql

comment fonctionne mysql update self table

Vous n'avez pas de colonne unique pour identifier vos lignes. Alors votre JOIN mettra probablement à jour plus de lignes que vous ne le pensez.

Vous voulez probablement quelque chose comme ça à la place :

UPDATE tem AS t1 JOIN (SELECT a, MIN(b) AS m FROM tem GROUP BY a) AS t2
USING (a)
SET t1.b = t2.m;

Voir http://sqlfiddle.com/#!2/c6a04/1

Si vous souhaitez uniquement mettre à jour les lignes ayant NULL dans la colonne b , ce n'est qu'une question de WHERE clause :

CREATE TABLE tem(a INT,b INT);    
INSERT INTO tem VALUES(1,2),(1,1),(1,NULL),(2,3);

UPDATE tem AS t1 JOIN (SELECT a, MIN(b) AS m FROM tem GROUP BY a) AS t2
USING (a)
SET t1.b = t2.m
WHERE t1.b IS NULL;

Voir http://sqlfiddle.com/#!2/31ffb/1