Pular para o conteúdo principal

Dica rápida: Apagando registros duplicados no MySQL

Ola pessoal,

Sei que vocês estão acostumados a ver posts meus sobre tecnologia móvel ou algo relacionado, mas hoje vou falar sobre um pequeno "truque" que usei esse final de semana com o MySQL. Eu estava desenvolvendo o lado servidor de uma nova aplicação mobile (ahh, então "tem a ver" com mobile hehe), e quando fui fazer alguns testes percebi que tinha quase 7 mil registros duplicados (!!!) na minha base de dados!

Bom, o meu primeiro reflexo como programador foi pensar em fazer um "programinha" Java para buscar e deletar todos esses registros duplicados. Mas ai, resolvi tirar as teias de aranha dos neurônios e usar os vários anos de experiência que passei com SQL e criar uma query que fizesse esse trabalho todo de uma vez!!

E a query ficou assim:

delete from TABLE_NAME
  1. USING TABLE_NAME, TABLE_NAME AS auxtable
  2. WHERE (NOT TABLE_NAME.id = auxtable.id)
  3. AND (TABLE_NAME.name = auxtable.name)

Explicação direta:

  • TABLE_NAME: Tabela que contém os registros duplicados que você deseja excluir.
  • auxtable: Alias da TABLE_NAME, para encontrar os registros.
  • TABLE_NAME.id (e auxtable.id): Chave primária da tabela TABLE_NAME, no meu caso a coluna se chama "id".
  • TABLE_NAME.name (e auxtable.name): Coluna a ser usada como referência para encontrar e definir o que é um registro duplicado. Nesse ponto você pode usar mais colunas (com AND) para definir o que é duplicado.
Espero que isso possa ajudá-los! ;-)

Ps.: English version to this post in my blog: http://netomarin.com/blog/20120303/quick-tip-removing-duplicate-records-from-mysql-database/.

[]s
Neto Marin

Comentários

Postagens mais visitadas deste blog

O que é Lógica de programação?

Este é o segundo de uma série de posts voltados aos leitores do blog que estão dando início à carreira de desenvolvimento de software. O assunto de hoje é a lógica de programação. Para ler antes: Entendendo como funciona a programação de computadores: linguagens de programação, lógica, banco de dados A lógica de programação é um pré-requisito para quem quer se tornar um desenvolvedor de software, independente da linguagem de programação que se pretende utilizar. Mas o que é de fato a Lógica de Programação e como saber se eu tenho esse pré-requisito? A lógica de programação nada mais é do que a organização coerente das instruções do programa para que seu objetivo seja alcançado. Para criar essa organização, instruções simples do programa, como mudar o valor de uma variável ou desenhar uma imagem na tela do computador, são interconectadas a estruturas lógicas que guiam o fluxo da execução do programa. Isso é muito próximo ao que usamos em nosso cotidiano para realizar atividad...

TDC ONLINE: SUA PLATAFORMA DE PALESTRAS GRAVADAS DO TDC DISPONÍVEL

Além do conteúdo ao vivo transmitido online nas edições do TDC, agora você pode ter acesso à centenas de palestras gravadas, através da nossa nova plataforma de vídeos - o TDC Online, que reúne todas as Trilhas premium, Stadium e Salas dos Patrocinadores das edições anteriores de 2022, TDC Innovation e TDC Connections.  Para acessar, basta clicar na edição em que você participou ( TDC Innovation ou TDC Connections ); Fazer o mesmo login (com e-mail e senha) cadastrados na hora de adquirir ou resgatar o seu ingresso no TDC; E clicar na Trilha de sua opção, e de acordo com a modalidade do seu ingresso. Logo em seguida, você será direcionado para a seguinte página com a lista de todas as palestras por Trilha: Pronto! Agora você tem acesso à centenas de palestras gravadas da sua área de interesse, para assistir como e quando quiser! Caso tenha esquecido a senha, clique na opção "Esqueci a senha" , insira o e-mail que você realizou para o cadastro no evento, e aparecerá a op...

Entendendo como funciona a programação de computadores: linguagens de programação, lógica, banco de dados

Nesse post, diferente dos últimos que foram mais enfáticos nas experiências com tecnologias, vou focar um pouco mais nos profissionais que estão começando, ou pretendem ingressar na área de desenvolvimento de software, falando sobre conceitos fundamentais relacionados a programação em geral . Mercado de trabalho para programação Conforme já sabemos, o mercado de desenvolvimento de software, especialmente no Brasil, continua em franca expansão, sendo que cada vez mais as empresas buscam desenvolver seus próprios sistemas usando as mais diferentes e novas tecnologias. Algumas matérias interessantes: As seis profissões mais valorizadas em 2010 no IDG Now! Muitas vagas e sensação de reaquecimento da economia Por isso, a área de desenvolvimento de software tem despertado interesse em muitos profissionais de outras áreas que desejam mudar de profissão, já que as oportunidades de trabalho tendem a ser maiores. Esse é um perfil presente em muitos dos clientes da Globalcode que acabou m...

SCJP 6 - curiosidades e dicas

O objetivo desse post é falar um pouco sobre a minha preparação para o exame de atualização da certificação SCJP 6, falar um pouco sobre a prova e compartilhar algumas dicas. Em 2005 fiz o exame SCJP 1.4 , já faz algum tempo, mas nunca vou me esquecer a aflição que passei aguardando a impressão do resultado após finalizar a prova e a emoção que senti ao ver que fui aprovado. Depois dessa certificação ainda fiz mais duas ( SCWCD e SCBCD ), mas acabei desanimando por não ter nenhum valor no meu antigo trabalho. Mas aprendi que temos que fazer o que o mercado pede, pois podemos precisar dele a qualquer momento. E felizmente as certificações Java tem grande valor para os processos seletivos. Esse ano decidi voltar a ativa com as certificações Java e o primeiro passo foi atualizar a SCJP. Consegui o livro “ Sun Certified Programmer for Java 6 - Study Guide ” da Kathy Sierra e Bert Bates, no formato PDF em inglês, para revisar cada detalhe, pois todos sabem que nas certificações Java qualqu...

Melhorando Performance de JPA com Spring Web Flow

No TDC2009 realizado pela Globalcode em São Paulo foi apresentado um Lightning Talk sobre um problema específico de performance em aplicações Web com JPA e uma possível solução usando o Spring Web Flow . Num período de 15 minutos, os slides a seguir foram apresentados e seguidos de alguns vídeos de demonstração de uma aplicação Web em execução. Melhorando performance do JPA com Spring Web Flow View more presentations from Dr. Spock . Nesta apresentação foi dito que temos encontrado problemas de performance em aplicações Web que utilizam as tecnologias JSF + JPA + Ajax quando precisamos gerenciar um contexto de persistência (EntityManager). Estes problemas se manifestam quando aplicamos uma resposta errada para a pergunta: Como gerenciar o contexto de persistência numa aplicação Web? Se as aplicações não usam Ajax e limitam-se ao modelo orientado a requisições, a solução mais comum é o uso do design pattern chamado "Open Session In View Filter". Através deste design...

Tendências: Linguagens Funcionais

A popularização obtida com a queda do custo de processadores multi-core e a dificuldade de se produzir software que fizesse um aproveitamento adequado desta arquitetura, despertou uma retomada pelo interesse e uma revisita às linguagens funcionais. Existem várias linguagens que se encaixam nessa classificação e as mais populares que temos notícias são Scheme, Haskell e ErLang. Para uma breve clarificação, as linguagens mais comumente usadas, como por exemplo C/C++, Java e etc., são classificadas como sendo linguagens imperativas. Por questões de objetividade, explorarei sucintamente ErLang mas creio que muitas de suas características valem para as outras linguagens funcionais também. ErLang é na verdade a abreviação de Ericson Language e comumente está associada ao seu framework de produtividade chamado OTP ( Open Telecom Platform ). Criada em 1986, se tornou open source 12 anos depois. O suporte para SMP ( Symmetric MultiProcessing ) viria posteriormente em 2006. A visão de q...