loading

MySQL INSERT SELECT

The MySQL INSERT INTO SELECT Statement

Data is copied from one table and inserted into another table using the INSERT INTO SELECT query.

The data types in the source and target tables must match for the INSERT INTO SELECT statement to function.

Note: Nothing changes for the records that are currently in the target table.

INSERT INTO SELECT Syntax

Copy all columns from one table to another table:

				
					INSERT INTO table2
SELECT * FROM table1
WHERE condition;
				
			

Copy only some columns from one table into another table:

				
					INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;
				
			

Demo Database

We’ll be using the well-known Northwind sample database in this tutorial.

A sample from the “Customers” table is shown below:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1

Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico

And a selection from the “Suppliers” table:

SupplierIDSupplierNameContactNameAddressCityPostal CodeCountry
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA
3Grandma Kelly’s HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA

MySQL INSERT INTO SELECT Examples

The columns that are not populated with data will include NULL in the SQL statement that follows, which copies “Suppliers” into “Customers”:

Example

				
					INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;
				
			

The following SQL statement copies “Suppliers” into “Customers” (fill all columns):

Example

				
					INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROM Suppliers;
				
			

The following SQL statement copies only the German suppliers into “Customers”:

Example

				
					INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers
WHERE Country='Germany';
				
			
Share this Doc

MySQL INSERT SELECT

Or copy link

Explore Topic