abobre Posted February 22, 2013 Share Posted February 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 to comment Share on other sites More sharing options...
Pedro Sodre Posted February 22, 2013 Share Posted February 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 to comment Share on other sites More sharing options...
abobre Posted February 22, 2013 Author Share Posted February 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 to comment Share on other sites More sharing options...
abobre Posted February 22, 2013 Author Share Posted February 22, 2013 POST DUPLICADO Link to comment Share on other sites More sharing options...
Pedro Sodre Posted February 22, 2013 Share Posted February 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 to comment Share on other sites More sharing options...
abobre Posted February 22, 2013 Author Share Posted February 22, 2013 Com o mesmo e-mail ! Link to comment Share on other sites More sharing options...
humberto.rodrigues Posted February 22, 2013 Share Posted February 22, 2013 Correto: DELETE FROM .... O seu esta: DELETE * FROM Link to comment Share on other sites More sharing options...
abobre Posted February 22, 2013 Author Share Posted February 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 to comment Share on other sites More sharing options...
Pedro Sodre Posted February 23, 2013 Share Posted February 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 to comment Share on other sites More sharing options...
Recommended Posts