phpMyAdmin
 sql >> Base de Dados >  >> Database Tools >> phpMyAdmin

MySQL UPDATE com SUBQUERY da mesma tabela


Você tem que usar uma tabela temporária, porque você não pode atualizar algo que você usa para selecionar. Um exemplo simples:

Isso não vai 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);

Isso fará o trabalho:
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" criará uma duplicata temporária de sua tabela, que não será afetada por suas atualizações