SQL INSERT INTO SELECTSentencia


Con SQL, puede copiar información de una tabla a otra.

La sentencia INSERT INTO SELECT copia datos de una tabla y los inserta en una tabla existente.


Sentencia SQL INSERT INTO SELECT

La sentencia INSERT INTO SELECT copia datos de una tabla y los inserta en una tabla existente. Las filas existentes en la tabla de destino no se verán afectadas.

Sintaxis de SQL INSERT INTO SELECT

Podemos copiar todas las columnas de una tabla e insertarlas en otra tabla existente:

INSERT INTO table2
SELECT * FROM table1;

O podemos copiar solo las columnas especificadas e insertarlas en otra tabla existente:

INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;


Base de datos de demostración

En este tutorial, usaremos la base de datos de muestra EJEMPLO.

A continuación se muestran los datos de la tabla "Websites":

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | Ejemplo      | http://www.example.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+

A continuación se muestran los datos de la APP "apps":

mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | app_name   | url                     | country |
+----+------------+-------------------------+---------+
|  1 | QQ APP     | http://im.qq.com/       | CN      |
|  2 | 微博 APP | http://weibo.com/       | CN      |
|  3 | 淘宝 APP | https://www.taobao.com/ | CN      |
+----+------------+-------------------------+---------+
3 rows in set (0.00 sec)


Ejemplo de SQL INSERT INTO SELECT

Copie los datos de "apps" e insértelos en "Websites":

Ejemplo

INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps;

Copie solo los datos con id=1 en "Websites":

Ejemplo

INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps
WHERE id=1;
Otras extensiones