Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vitor Justin

[Resolvido] Delete

Recommended Posts

Pessoal, estou com um exercício que não estou conseguindo resolver. Eu tenho que remover os últimos 5 registros de uma tabela. E eu ja tentei de várias formas mas não estou conseguindo. A última forma que eu tentei foi assim:

 

DELETE FROM clientes WHERE idCliente > (SELECT MAX(idCliente)-5 FROM clientes);

Só que o mysql acuso o seguinte erro:

Error Code : 1093

You can't specify target table 'clientes' for update in FROM clause

(0 ms taken)

 

A estrutura da minha tabela de clientes é assim:

 

Nome da coluna Tipo idCliente int(10) unsigned not null auto_increment primary key | nome varchar(50) | cpf varchar(14) | rg varchar(20) | cep varchar(9) | telefone | varchar(30) | email varchar(100) | senha varchar(50) | bloqueado char(1) | bairro varchar(45)

 

Alguém tem alguma idéia, de como fazer? e o que eu estou fazendo errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu jah to meio dormindo...

mas tenta isso

 

DELETE FROM clientes WHERE idCliente IN (SELECT idCliente FROM clientes ORDER BY idCliente DESC LIMIT 5);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela ajuda Lucas, mas o mysql me retornou o seguinte erro:

 

Error Code : 1235

This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

 

Alguém ja se deparou com esse erro? e o que eu poderia fazer para solucioná-lo?

 

Desde já, obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm =[ Qual é a versão de seu MySQL?

Tente abrir a tag PHP por <?php, mas acho que não adiantará nada. A melhor coisa, porém, é fazer um update na versão do seu MySQL, com backup e talz.

Qualquer coisa dá uma olhada: http://dev.mysql.com/doc/refman/5.1/en/upgrade.html

 

Flw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm =[ Qual é a versão de seu MySQL?

Tente abrir a tag PHP por <?php, mas acho que não adiantará nada. A melhor coisa, porém, é fazer um update na versão do seu MySQL, com backup e talz.

Eliseu, a versão do meu MySQL é 5.0.45.

E no caso da tag PHP, não seria esse o problema, porque eu estou fazendo esse delete diretamente no MySQL, e não por meio do PHP.

Pra fazer um update na versão do MySQL, existe algum risco, de perda dos meus bancos atuais?

 

Agradeço desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

viagem minha mesmo =[

 

o mysql não aceita a cláusula LIMIT em subqueries..

 

você manja de stored procedure? aí ficaria mais fácil

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao pode usar subquery embaixo num delete, mas pode usar do lado

 

DELETE FROM clientes , (SELECT (MAX(idCliente)-5)a FROM clientes)z

WHERE idCliente > z.a

Compartilhar este post


Link para o post
Compartilhar em outros sites

viagem minha mesmo =[

 

o mysql não aceita a cláusula LIMIT em subqueries..

 

você manja de stored procedure? aí ficaria mais fácil

 

Nunca usei stored procedure :/ mas vou dar uma pesquisada.

 

mas quanto ao DELETE no mysql, ele não aceita sub-selects?

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao pode usar subquery embaixo num delete, mas pode usar do lado

 

DELETE FROM clientes , (SELECT (MAX(idCliente)-5)a FROM clientes)z

WHERE idCliente > z.a

 

giesta, valeu pela ajuda, mas não deu, o mysql acusou um erro de sintaxe na query :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

nao pode usar subquery embaixo num delete, mas pode usar do lado

 

DELETE FROM clientes , (SELECT (MAX(idCliente)-5)a FROM clientes)z

WHERE idCliente > z.a

 

giesta, valeu pela ajuda, mas não deu, o mysql acusou um erro de sintaxe na query :/

 

Rapaz, os ultimos cinco registros?

Se o idCliente é PK e é Auto Increment...

 

É assim

DELETE FROM clientes ORDER BY idCliente DESC LIMIT 5

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

nao pode usar subquery embaixo num delete, mas pode usar do lado

 

DELETE FROM clientes , (SELECT (MAX(idCliente)-5)a FROM clientes)z

WHERE idCliente > z.a

 

giesta, valeu pela ajuda, mas não deu, o mysql acusou um erro de sintaxe na query :/

 

Rapaz, os ultimos cinco registros?

Se o idCliente é PK e é Auto Increment...

 

É assim

DELETE FROM clientes ORDER BY idCliente DESC LIMIT 5

 

Paulo Vitor, muito obrigado, era isso mesmo, deu tudo certinho, valeu !

Compartilhar este post


Link para o post
Compartilhar em outros sites

era tão simples e eu tava viajando

uhauhahua

 

vou começar a olhar o forum na parte da tarde, pq de noite eu fico durmindo acordado

auhahuahuauh

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.