sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

ACTUALIZACIÓN de MySQL con SUBQUERY de la misma tabla

Tienes que usar una tabla temporal, porque no puedes actualizar algo que usas para seleccionar. Un ejemplo sencillo:

Esto no funcionará:

UPDATE mytable p1 SET p1.type= 'OFFER' WHERE p1.parent IN 
    (SELECT p2.id from mytable p2 WHERE p2.actu_id IS NOT NULL);

Esto hará el trabajo:

UPDATE mytable p1 SET p1.type= 'OFFER' WHERE p1.parent IN 
    (SELECT p2.id from (SELECT * FROM mytable) p2 WHERE p2.actu_id IS NOT NULL);

"from (SELECT * FROM mytable) p2" creará un duplicado temporal de su tabla, que no se verá afectado por sus actualizaciones