Copiar dados de um tabela para outra em MySQL

Hoje precisei copiar dados de uma tabela para outra. Mas como fazer isso facilmente atraves de linha de comando? … vou dizer, mas antes vamos as premissas:

* Não quero registros repetidos, neste caso o e-mail

* Não quero todos os dados da tabela Servidor (onde vou pegar os dados).

* So quero os e-mails começados com a letra “a”.

Então, vamos a dica:


INSERT INTO tabela2  (nome, email) SELECT nome, email FROM tabela1 WHERE (email LIKE 'a%') GROUP BY email

Logico que os dados acima são fictícios, mas funciona. A explicação basica é:

1- O comando INSERT como outro qualquer na tabela2 (a que vai receber os dados)

2- Em seguida vem um SELECT normal tambem, com os campos que desejo importar na mesma ordem que eu coloquei para inserir.

3- O WHERE para a condição dos e-mails começando com a letra “a”.

4- O GROUP BY para não repetir os e-mails. Poderia usar tambem o DISTINCT ou similar, fica a critério do fregues.

Se tiver alguma duvida sobre MySQL pode perguntar, se eu souber irei responder com certeza.

74 comments

  1. Muito obrigada :)
    Seu blog é muito legal, parabéns!!!

    insert into valor (total) select SUM(valor1 + valor2) FROM teste where idteste = 1;

  2. Olá,
    Como seria para copiar somente os dados de um item de uma tabela para outra?
    Porque testei este comando ele joga todos os itens da tabela1 para a tabela2

    Muito obrigado.

  3. Ola, tenho 3 tabelas.. pedidos, produtos e estoque. gostaria de selecionar os produtos atraves de um input e inserir na tabela pedidos dentro do id do pedido os seguintes dados (produto, cod_prod, qtd_estoque) e diminuir da tabela estoque (qtd_estoque) e atualizar os itens adicionados na pagina do respectivo pedido.php?id= 1

  4. Alberto, para diminuir, é so adicionar na query do MySql… nomeCampo=nomeCampo-$quantidade

  5. por exemplo, tenho 2 tabelas…
    tabela vendas com os campos descricao e valor
    e a tabela finaliza vendas com os campos descricao, valor e vendedor….
    ta copiando certinho descricao e valor, mas como acrescentar junto com o codigo o vendedor? tentei colocar um VALUES no final e nao vai

  6. parabens, pela dica sempre uso isso para manutencao nas minhas tabelas… cai aqui no site por acaso, mas gostei ainda mais por voce ter assinatura como “Dourado”.. tu e de onde amigo, se for da Bahia. talvez possamos ser parentes por que minha familia toda assina dourado, so eu que nao. abraços ate+.

  7. Robson, sou quase da Bahia, norte de Minas. Mas tenho familiares no sul da Bahia sim! :)

  8. Estou fazendo um sistema de vendas (delphi 9/MySQL) e estou c/ um problema. Já existe dados na tb_Prod, e qdo mando incluir outro prod, atravéz de speedbutton_Novo controlado pelo action aparentemente um registro foi aberto, mas qdo começo a digitar o novo prod, é mostrado nos campos que estava em branco, os dados de um registro já gravado. No DataMod de conexao MyDac estão: uma MyQuery e uma MyTable com seus respectivos MyDataSource. Gostaria de sair desta com a sua ajuda e a de Deus principalmente. Obg ALHF.

  9. Boa tarde gostei bastante da explicação.

    Como faço para aumentar o desempenho dos meus queries no Workbanch 6.0, as minhas tabelas têm bastante dados (8.000 registos), quando faço os inner joins ela demora depois dá mensagem de erro(Lost connection. Error Id: 2013), mesmo que Limitando para poucos registos, já aumentei o DBMS em preferencias, mas nada.

  10. Gostaria da ajuda de vocês, pois estou estudando php_mysql.

    Preciso dar saída de maquinas “cad_maquinas” enviar para “movimentacao_maquinas” e gerar no id_saída. Ao retornar com a maquina fazer o retorno dela para “cad_maquinas”
    ( função e fazer saidas de maquinas e gerar um numero desta saida com os dados da maquina e depois fazer o retorno destas maquinas.)
    Obrigado

  11. Nando, não tem mistério de fazer isso com PHP, mas vou me focar em responder dúvidas e não da soluções prontas, ok? Se quiser uma consultoria, entre em contato pelo meu e-mail, se tiver alguma duvida em especifico, manda ai que a gente responde sem problemas! :)

  12. Gostaria de saber se é possível fazer uma cópia de uma tabela pra outra quando as duas tabelas pertencem a bancos de dados diferentes. Tentei conectar nos dois bancos e dar um insert assim:

    INSERT INTO test.tartest (SELECT * FROM ibcneto_inaciobr2.tarefas)

    Sendo test o banco e tartest a tabela na qual será copiada; e ibcneto_inaciobr2 o banco e tarefas a tabela de onde vêm os dados.

    Mas não funcionou.

  13. Valeu, me ajudou muito que DEUS continue te abençoando dia a dia aumentando seus conhecimento para ajudar quem precisa.

  14. Obrigado Nilson, são comentários sinceros como este que nos dá vontade de continuar sempre! valeu, fica com Deus! :)

  15. Bom dia, tenho a seguinte situação:

    tabela1, telefone_2 (estes dados que quero manter)
    tabela2, telefone (está em branco)

    quero copiar todos os telefones da tabela1.telefon_2 para tabela2.telefone porém cada linha tem o ID_usuario relacionado com o telefone.

    Como copiar da tabela1 para a tabela2 onde os id´s são iguais?

  16. Precisa ser so com MySQL? acho melhor vc relacionar com o PHP em vez de fazer uma query apenas.

  17. Preciso jogar os dados de uma procedure (está em um banco – servidor x)

    para um outro banco novo (servidor y).

    Como faria?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.