abobre Postado Fevereiro 22, 2013 Compartilhar Postado Fevereiro 22, 2013 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 Link para o comentário Compartilhar em outros sites More sharing options...
Pedro Sodre Postado Fevereiro 22, 2013 Compartilhar Postado Fevereiro 22, 2013 @abobre, seria bom se pudesse disponibilizar a estrutura da tabela pessoa_fisica do Banco de dados pra gente olhar certinho :D Abraço Link para o comentário Compartilhar em outros sites More sharing options...
abobre Postado Fevereiro 22, 2013 Autor Compartilhar Postado Fevereiro 22, 2013 @abobre, seria bom se pudesse disponibilizar a estrutura da tabela pessoa_fisica do Banco de dados pra gente olhar certinho Abraço Obrigado pela resposta, já inclui a estrutura no primeiro tópico ! grato Link para o comentário Compartilhar em outros sites More sharing options...
abobre Postado Fevereiro 22, 2013 Autor Compartilhar Postado Fevereiro 22, 2013 POST DUPLICADO Link para o comentário Compartilhar em outros sites More sharing options...
Pedro Sodre Postado Fevereiro 22, 2013 Compartilhar Postado Fevereiro 22, 2013 Obrigado pela resposta, já inclui a estrutura no primeiro tópico ! grato No caso, você quer deletar todos cadastros com mesmo e-mail ou mesmo nome? Link para o comentário Compartilhar em outros sites More sharing options...
abobre Postado Fevereiro 22, 2013 Autor Compartilhar Postado Fevereiro 22, 2013 Com o mesmo e-mail ! Link para o comentário Compartilhar em outros sites More sharing options...
humberto.rodrigues Postado Fevereiro 22, 2013 Compartilhar Postado Fevereiro 22, 2013 Correto: DELETE FROM .... O seu esta: DELETE * FROM Link para o comentário Compartilhar em outros sites More sharing options...
abobre Postado Fevereiro 22, 2013 Autor Compartilhar Postado Fevereiro 22, 2013 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 Link para o comentário Compartilhar em outros sites More sharing options...
Pedro Sodre Postado Fevereiro 23, 2013 Compartilhar Postado Fevereiro 23, 2013 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 Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados