Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Inserir dados de uma tabela em outra no MySQL


Digamos que você precise copiar dados de uma tabela para outra. Você pode inserir dados de uma tabela em outra no MySQL.

A instrução INSERT INTO SELECT copia dados de uma tabela para outra. As linhas existentes na tabela de destino não são afetadas.

Sintaxe
Insira dados de uma tabela em outra para todas as colunas,
INSERT INTO table2
SELECT * FROM table1;

Insira dados de uma tabela em outra para colunas específicas,
INSERT INTO table2
column1, column2..
SELECT column1, column2, ..
FROM table1;

Exemplos
Considere 2 tabelas de amostra, Usuários e Clientes
Users
+------+--------------+-------------+
|  id  |   user_name  |   location  |
+------+--------------+-------------+
|   1  |      Jim     |   London    |
|   4  |      Rocky   |   US        |
|   7  |      Dan     |   Italy     |
|   3  |      Bill    |   France    |
+------+--------------+-------------+
Customers
+-------+------------------+--------+------------+
|   id  |   customer_name  |   age  |  location  |
+-------+------------------+--------+------------+
|   11  |       John       |    23  |     US     |
|   14  |      Roger       |    36  |    London  |
|   17  |       Will       |    29  |    Spain   |
|   13  |       Bob        |    34  |    Japan   |
+-------+------------------+--------+------------+

Insira dados de uma tabela em outra para algumas colunas
mysql> INSERT INTO users (user_name, location)
SELECT customer_name, location FROM customers;
+------+--------------+-------------+
|  id  |   user_name  |   location  |
+------+--------------+-------------+
|   1  |      Jim     |   London    |
|   4  |      Rocky   |   US        |
|   7  |      Dan     |   Italy     |
|   3  |      Bill    |   France    |
|   11  |     John    |     US      |
|   14  |     Roger   |    London   |
|   17  |     Will    |     Spain   |
|   13  |     Bob     |     Japan   |
+-------+-------------+-------------+

Insira dados de uma tabela em outra para algumas colunas, apenas os clientes localizados em 'EUA'