phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

MySQL UPDATE avec SUBQUERY de la même table

Vous devez utiliser une table temporaire, car vous ne pouvez pas mettre à jour quelque chose que vous utilisez pour sélectionner. Un exemple simple :

Cela ne fonctionnera pas :

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

Cela fera l'affaire :

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" créera un doublon temporaire de votre table, qui ne sera pas affecté par vos mises à jour