如何从 table 中为每个外键插入新行

How to insert new rows for each foreign key from a table

我想查询为每个用户添加来自 ID 为 0 的用户(id_user,默认用户)的所有 id_job、id_role 对。 mysql可以吗?

user_role table

id_user id_job id_role
0 1 1
0 2 2
1 1 1
1 2 2
2 3 1

这些是我想要到达的日期。正如您在第一个 table 中看到的,对于 id 为 2 的用户,我们没有 id_job 和 id_role [(1,1), (2,2)] 和我想 运行 一个查询,为该用户填充缺失的对。

user_role_updated table

id_user id_job id_role
0 1 1
0 2 2
1 1 1
1 2 2
2 3 1
2 1 1
2 2 2

提前致谢!

insert into user_role(id_user, id_job, id_role)
with cte_0 as(select id_user
                     , id_job
                     , id_role 
              from user_role 
              where id_user = 0)
select distinct ur.id_user
                , cte_0.id_job
                , cte_0.id_role
from user_role ur
     , cte_0
where ur.id_user <> 0
and (ur.id_user, cte_0.id_job, cte_0.id_role) not in (select id_user, id_job, id_role from user_role where id_user <> 0)

Here is a demo