Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Postado

Boa tarde,


estou fazendo a higienização do meu banco de dados e através do google
encontrei uma query que deleta os cadastros repetidos, porem não estou
entendendo muito bem o funcionamento desta query.


DELETE *
FROM pessoa_fisica AS p1
CROSS JOIN (
SELECT email FROM pessoa_fisica GROUP BY email HAVING COUNT(email > 1
) AS p2
USING (email)

 

Essa é a estrutura do meu banco de dados.

 

CREATE TABLE `pessoa_fisica` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`nome` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`estado` varchar(255) DEFAULT NULL,
`cidade` varchar(255) DEFAULT NULL,
`fone_res` varchar(255) DEFAULT NULL,
`fone_com` varchar(255) DEFAULT NULL,
`fone_cel` varchar(255) DEFAULT NULL,
`endereco` varchar(255) DEFAULT NULL,
`numero` varchar(45) DEFAULT NULL,
`complemento` varchar(255) DEFAULT NULL,
`bairro` varchar(255) DEFAULT NULL,
`cep` varchar(255) DEFAULT NULL,
`segmento` longtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2053627 DEFAULT CHARSET=latin1$$



O que signica esse p1 e p2 ???

Ao executar essa query o erro gerado é esse:

Error Code: 1064. You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to
use near '* FROM pessoa_fisica AS p1 CROSS JOIN ( SELECT email FROM
pessoa_fisica GROUP' at line 1



Grato pela ajuda

Postado

@abobre,

 

seria bom se pudesse disponibilizar a estrutura da tabela pessoa_fisica do Banco de dados pra gente olhar certinho biggrin.png

 

Abraço

 Obrigado pela resposta, já inclui a estrutura no primeiro tópico !

 

 

 grato

Postado

Correto:

DELETE FROM ....

O seu esta:

DELETE * FROM

 

 Obrigado pela resposta !

 

 Eu fiz da forma que você informou, porem o sistema agora gera outro erro.

 

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS p1  CROSS JOIN (   SELECT email FROM pessoa_fisica GROUP BY email HAVING COUN' at line 1

Grato

Postado

Prezado,

 

faça com 2 querys, uma para selecionar e outra pra apagar. Tente isso para selecionar os repetidos:

 

SELECT email, COUNT(1) FROM pessoa_fisica BY email HAVING COUNT(1) > 1

 

 

Abraço

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Concorda com os nossos termos?

-