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

MySQL DELETE FROM con subquery come condizione

Per gli altri che trovano questa domanda cercando di eliminare durante l'utilizzo di una sottoquery, ti lascio questo esempio per superare in astuzia MySQL (anche se alcune persone sembrano pensare che non sia possibile):

DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
             FROM tableE
             WHERE arg = 1 AND foo = 'bar');

ti darà un errore:

ERROR 1093 (HY000): You can't specify target table 'e' for update in FROM clause

Tuttavia questa domanda:

DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
             FROM (SELECT id
                   FROM tableE
                   WHERE arg = 1 AND foo = 'bar') x);

funzionerà bene:

Query OK, 1 row affected (3.91 sec)

Avvolgi la tua sottoquery in una sottoquery aggiuntiva (qui denominata x) e MySQL farà felicemente ciò che chiedi.