Artigo: Insert a partir de um Select no MySql - Gigasystems

MySql

Em por

insert-a-partir-de-um-select-no-mysql
Insert a partir de um Select no MySql

Olá, neste artigo vamos mostrar de várias maneiras, como inserir dados de uma tabela em outra, utilizando o MYSQL.

Muitas vezes é necessário fazer um INSERT de dados em uma tabela (“ALVO”) trazendo resultados de outra tabela (“ORIGEM”) na mesma base de dados ou em bases diferentes. Para fazer esta instrução SQL na mesma base de dados, podemos até omitir o banco de dados, desde que esteja com ele selecionado. Agora, para bases diferentes, é imprescindível o uso do nome do banco, senão é óbvio que irá dar erro, pois ele não saberá quem é MARIA e quem é JOANA.

Pois bem, então como fazer? 

Podemos fazer da seguinte forma:

 INSERT INTO banco.tabela-alvo (campo1, campo2, campo3...) SELECT campo1, campo2, campo3... FROM banco.tabela-origem; 

Atente-se para que os campos estejam na mesma sequência tanto na instrução INSERT quanto na instrução SELECT, pois é seguida a sequência de campos em ambas as instruções, como na regra que aprendemos da instrução INSERT. Também não se esqueça do ponto e vírgula no final da última instrução. Imprescindível!

Mas por exemplo, se eu quiser importar os dados de duas tabelas para uma terceira tabela como seria? Eu posso descriminar os campos que desejo importar?

Sim, você pode fazer qualquer SELECT, descriminando os campos e usando duas tabelas. O importante é que o número dos campos que você retorne e os tipos do mesmo tenham correspondência com os campos que você especificar no INSERT.

No exemplo a seguir, estou inserindo na TABELA_ALVO, dados de duas tabelas: CLIENTE e DEPARTAMENTO, sendo que os campos NOME e IDADE vem de Cliente.Nome e Cliente.Idade e DEPARTAMENTO vem de Departamento.Nome_Dept

 INSERT INTO TABELA_ALVO(NOME, IDADE, DEPARTAMENTO) SELECT CLI.NOME, CLI.IDADE, DEP.NOME_DEPT FROM CLIENTE CLI, DEPARTAMENTO DEP WHERE CLI.NUM_DEPT = DEP.NUM_DEPT 

Também podemos fazer o exemplo acima utilizando JOIN desta forma:

 INSERT INTO TABELA_ALVO(NOME, IDADE, DEPARTAMENTO) SELECT CLI.NOME, CLI.IDADE, DEP.NOME_DEPT FROM CLIENTE CLI INNER JOIN DEPARTAMENTO DEP ON CLI.NUM_DEPT = DEP.NUM_DEPT 

Esta técnica é muito utilizada para fechamento do mês, onde a qualquer momento você precise dos dados rapidamente para gerar um gráfico de demonstração de resultados, um auxiliar para gerar SPED, ou seja, seu uso pode servir para vários fins, depende da sua necessidade.

Se tiverem sugestões, duvidas ou reclamações comentem... e  bons estudos!!!

Olá, deixe seu comentário para Insert a partir de um Select no MySql

Já temos 1 comentário(s). DEIXE O SEU :)
josé netto

josé netto

Olá.. eu preciso enviar dados de uma tabela para a outra que tem estruturas iguais, só mudam os nomes das tabelas... como eu fiz:


INSERT INTO tborigem('ID','user_login','user_pass','user_nicename','user_email',


'user_url','user_registered','user_activation_key','user_status','display_name')


SELECT ('ID','user_login','user_pass','user_nicename','user_email',


'user_url','user_registered','user_activation_key','user_status','display_name') FROM tbdestino;

★★★★★DIA 16.07.20 17h01RESPONDER
N/A
Enviando Comentário Fechar :/
Enviando Comentário Fechar :/

Veja Também:

Artigos Relacionados a categoria: MySql

Soluções

...CURTIU? AINDA NÃO VIU NOSSO PORTFÓLIO?


Se ainda não viu nosso Portfólio e quer conhecer um pouco mais... aproveite, veja agora mesmo nossos Cases de Sucesso e tenha seu site nos padrões atuais preparado para maioria dos dispositivos e navegadores.

Usamos cookies para manter o site seguro, registrar e personalizar sua navegação. Para mais detalhes sobre essa atividade, acesse nossa Politica de Privacidade

Entendi