如何从 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)
我想查询为每个用户添加来自 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)