Mysql
 sql >> Database >  >> RDS >> Mysql

come funziona mysql update self table

Non hai una colonna univoca per identificare le tue righe. Quindi il tuoJOIN probabilmente aggiornerà più righe come pensi.

Probabilmente vorrai invece qualcosa del genere:

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;

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

Se vuoi aggiornare solo le righe con NULL nella colonna b , questa è solo una questione di WHERE clausola:

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;

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