phpMyAdmin
 sql >> Datenbank >  >> Database Tools >> phpMyAdmin

MySQL UPDATE mit SUBQUERY derselben Tabelle

Sie müssen eine temporäre Tabelle verwenden, da Sie etwas, das Sie zum Auswählen verwenden, nicht aktualisieren können. Ein einfaches Beispiel:

Das funktioniert nicht :

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

Dies wird die Arbeit erledigen:

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" erstellt ein temporäres Duplikat Ihrer Tabelle, das von Ihren Aktualisierungen nicht betroffen ist