sql >> Base de Datos >  >> RDS >> Mysql

cómo funciona mysql update self table

No tiene una columna única para identificar sus filas. Así que tu JOIN probablemente actualizará más filas como usted piensa.

Probablemente quieras algo así en su lugar:

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;

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

Si solo desea actualizar las filas que tienen NULL en la columna b , esto es solo cuestión de WHERE cláusula:

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;

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