Home > other >  Insert two Records in new mysql table for each record in another table
Insert two Records in new mysql table for each record in another table

Time:02-04

I need to Insert two Records in a new mysql table for each record in another table example:

table1

id, name 
1, Patrick
2, John

I want to insert favorite site for each records in the second table and each record should have facebook and google as default

the second table should looks like: table2

table1_id, site
1, facebook
1, google
2, facebook
2, google

CodePudding user response:

We can multiply the original table with a fixed list of rows with a cross join:

insert into table2 (table1_id, site)
select t1.id, s.site
from table1 t1
cross join (select 'google' site union all select 'facebook') s

In recent MySQL versions (>= 8.0.19), the VALUES statement makes the syntax neater:

insert into table2 (table1_id, site)
select t1.id, s.site
from table1 t1
cross join ( values row('google'), row('facebook') ) s(site) 

CodePudding user response:

This is an other way to do it using inner join

insert into table2
select t1.id, s.site
from table1 t1
inner join (
  select 'facebook' site union select 'google' site
) as s on s.site <> ''
order by t1.id;

Demo here

  • Related