INSERT INTO SELECT copia los datos de una tabla y los inserta en otra tabla.
- INSERT INTO SELECT requiere que los tipos de datos en las tablas de origen y destino coincidan.
- Los registros que ya existían en la tabla de destino no se modifican.
INSERT INTO SELECT: Sintaxis para seleccionar los registros a insertar en otra tabla
En el siguiente ejemplo se copian todas las columnas de una tabla a otra tabla:
INSERT INTO tabla2 SELECT * FROM tabla1 WHERE condicion;
Ejemplo para insertar solo las columnas seleccionadas con INSERT INTO SELECT
En el ejemplo se insertan solamente algunas columnas de una a otra tabla:
INSERT INTO table2 (columna1, columna2, columna3, ...) SELECT columna1, columna2, columna3, ... FROM tabla1 WHERE condicion;
Ejemplos de SQL INSERT INTO SELECT
A continuación puedes ver algunos ejemplos de INSERT INTO SELECT:
Ejemplo 1
La siguiente consulta SQL copia «Proveedores» en «Clientes» (las columnas que no están llenas de datos, serán NULL):
INSERT INTO Clientes (NombreCliente, Ciudad, Pais) SELECT NombreProveedor, Ciudad, Pais FROM Proveedores;
Ejemplo 2
La siguiente declaración SQL copia «Proveedores» en «Clientes»:
INSERT INTO Clientes (Nombre_Cliente , Nombre_Contacto , Direccion , Ciiudad , CodigoPostal, Pais) SELECT Nombre_Proveedor , Nombre_Contacto , Direccion , Ciudad , CodigoPostal , Pais FROM Proveedores;
Ejemplo 3
En el siguiente ejemplo, la consulta SQL copia solo los proveedores de Uruguay en «Clientes»:
INSERT INTO Clientes (NombreCliente, Ciudad, Pais) SELECT NombreProveedor, Ciudad, Pais FROM Proveedores WHERE Pais='Uruguay';