Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

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

Quando executo o comando, recebo o seguinte erro abaixo.

mysql> update produtos set idcategoria=0 where id=(select max(id) from produtos);
ERROR 1093 (HY000): You can't specify target table 'produtos' for update in FROM clause

Só funcionou quando eu peguei o ultimo item da tabela "manualmente" e alterei da seguinte forma. Onde o id 15 é o ultimo item da tabela.

mysql> update produtos set idcategoria=0 where id=15;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

o que esta de errado no comando ? desde já agradeço

3 respostas

Fala Vanderson, tudo bem ?

Cara algo que você pode fazer é isso aqui na sua subquery :

SELECT id FROM permlog ORDER BY id DESC LIMIT 1

solução!

Olá vanderson,

o mysql tem um problema quando você tenta fazer um update numa tabela e usa a mesma em uma subquery dentro do where, ele se perde. Por isso desse erro.

Para conseguir atualizar a tabela de produtos pegando alguma informação de uma subquery, você teria que controlar isso via join. Por exemplo, essa query acima ficaria assim:

update produtos p join (select max(p2.id) as idMax  from produtos p2) as sub on p.id = sub.idMax set p.idcategoria=0;

Entendi, Muito Obrigado novamente.