Summary: in this tutorial, you will learn how to use the MariaDB insert into select
statement to insert result sets of a query into a table.
The value list of an insert statement can be either literal values or the result set of a query.
The following shows the syntax of the insert
statement whose value list comes from a select
statement:
insert into table_name(column_list)
select select_list
from table_name
...;
Code language: SQL (Structured Query Language) (sql)
In this syntax:
- First, specify the name of the table and a list of columns that you want to insert data.
- Second, specify the select statement that returns a result set whose columns are corresponding to the
column_list
;
The insert into select
statement can be very useful to copy data from one table to another table or to insert a summary data from tables into a table.
MariaDB insert into select examples
We’ll use the tables countries
and regions
from the sample database for the demonstration:
A) Inserting rows from a table into another table example
First, create a new table called small_countries
:
create table small_countries(
country_id int primary key,
name varchar(50) not null,
area decimal(10,2) not null,
);
Code language: SQL (Structured Query Language) (sql)
Second, insert countries whose areas are less than 50,000 km2 from the countries
table into the small_countries
table:
insert into small_countries
(country_id,name,area)
select
country_id, name, area
from
countries
where
area < 50000;
Code language: SQL (Structured Query Language) (sql)
Third, query data from the small_countries
table:
select *
from small_countries;
Code language: SQL (Structured Query Language) (sql)
B) Inserting summary data of tables into another table example
First, create a table called region_areas
that stores names and areas of regions.
create table region_areas(
region_name varchar(100) not null,
region_area decimal(15,2) not null,
primary key(region_name)
);
Code language: SQL (Structured Query Language) (sql)
Second, query data from tables countries
and regions
and insert it into the table region_areas
:
insert into region_areas
(region_name, region_area)
select
regions.name,
sum(area)
from
countries
inner join regions
using (region_id)
group by
regions.name;
Code language: SQL (Structured Query Language) (sql)
Third, query data from the region_areas
table:
select *
from
region_areas
order by
region_area;
Code language: SQL (Structured Query Language) (sql)
In this tutorial, you have learned how to use the MariaDB insert into select
statement to insert a result set of a query into a table.