Nossos pensamentos, nossas atitudes, nossas emoções, tudo são formas de energia, constantemente influenciando o mundo a nossa volta. (Diane Dreher)

logo Moraga  
Principal
Categorias
Ferramentas

telescópio

Semanal Mensal Geral
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Verificar CPF com PHP
  3. Jogo da velha ou Tic tac toe
  4. Captcha em PHP
  5. createElement - Solução compatível com os navegadores
  6. removeChild - Remover elementos HTML por Javascript
  7. Copiando tabelas e removendo registros duplicados no MySQL
  8. Gerando Thumbnails com PHP
  9. Removendo linhas e espaços em branco de strings
  10. Apache Expires Header - Cache de imagens, Javascript e CSS
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Verificar CPF com PHP
  3. Captcha em PHP
  4. Jogo da velha ou Tic tac toe
  5. Copiando tabelas e removendo registros duplicados no MySQL
  6. createElement - Solução compatível com os navegadores
  7. removeChild - Remover elementos HTML por Javascript
  8. Gerando Thumbnails com PHP
  9. Removendo linhas e espaços em branco de strings
  10. Apache Expires Header - Cache de imagens, Javascript e CSS
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Captcha em PHP
  3. Jogo da velha ou Tic tac toe
  4. createElement - Solução compatível com os navegadores
  5. Copiando tabelas e removendo registros duplicados no MySQL
  6. Apache Expires Header - Cache de imagens, Javascript e CSS
  7. Removendo linhas e espaços em branco de strings
  8. removeChild - Remover elementos HTML por Javascript
  9. Verificar se existe um valor no Array em Javascript
  10. Gerando Thumbnails com PHP
e-mail Enviar por e-mail imprimir Imprimir
SGBD/SQL

Copiando tabelas e removendo registros duplicados no MySQL

Por Alejandro Fernandez Moraga

Copiar tabela

O comando cria uma tabela com a estrutura e dados da tabela selecionada, ou seja, copia a tabela.

CREATE TABLE nova_tabela SELECT * FROM tabela;

Para copiar somente a estrutura da tabela use cláusula LIMIT com valor 0 (zero).

CREATE TABLE nova_tabela SELECT * FROM tabela LIMIT 0;

Como remover os registros duplicados

Como a tabela é criada a partir do resultado do SELECT, acrescente a cláusula GROUP BY - que agrupa os valores iguais - para selecionar apenas os dados distintos. Depois de criar a tabela você pode optar por: substituir a nova tabela pela original, deve-se excluir a tabela original e renomear a nova tabela; ou eliminar todos os dados da tabela original e preenche-la com os dados da nova tabela.

CREATE TABLE nova_tabela SELECT * FROM tabela_original GROUP BY campo;

Na primeira opção, a nova tabela assume a tabela original.

DROP TABLE tabela_original;
ALTER TABLE nova_tabela RENAME TO tabela_original;

Na segunda opção, a tabela nova faz o papel de uma tabela temporária.

TRUNCATE tabela_original;
INSERT INTO tabela_original SELECT * FROM tabela_nova;
DROP TABLE nova_tabela;

Para evitar que novos registros sejam duplicados, altere a tabela transformando o campo que não pode ser duplicado em campo único.

ALTER TABLE tabela ADD unique(campo);

Exemplo

Tabela boletim
idemail
1pessoa@exemplo.com
2empresa@exemplo.com
3contato@exemplo.com
4pessoa@exemplo.com

A tabela boletim tem dados duplicados. O e-mail pessoa@exemplo.com foi inserido duas vezes.

CREATE TABLE boletim_novo SELECT * FROM boletim GROUP BY email ORDER BY email;

DROP TABLE boletim;

ALTER TABLE boletim_novo RENAME TO boletim;
ALTER TABLE boletim ADD UNIQUE(email);

Referências

Comentários
  • Higor Vaz (www.plusti.net) 14 de Janeiro de 2009 22:25

    Como procurei em sites gringos, e como de costumo a solução ta no "Arroz com Feijao" de casa.
    Ótima contribuição
    Higor


Comentar
captcha