在新的mysql表中为另一个表中的每条记录插入两条记录

iszxjhcz  于 2023-02-11  发布在  Mysql
关注(0)|答案(2)|浏览(168)

我需要插入两个记录在一个新的mysql表中的每个记录在另一个表的例子:
表一

id, name 
1, Patrick
2, John

我想在第二个表中为每条记录插入收藏夹网站,每条记录都应默认为facebook和google
第二个表应如下所示:表二

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

vltsax251#

我们可以用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

在最近的MySQL版本(〉= 8.0.19)中,the VALUES statement使语法更简洁:

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

tag5nh1u2#

这是使用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

相关问题