如何从两个查询中将数据插入关系 table
How to insert data into relation table from two queries
不确定如何写问题。
我有这 3 个表:
PICTURES
id
name
MATERIALS
id
name
PICTURES_MATERIALS
picture_id
material_id
我有几千张图片和 5 个 material,大多数图片都有 material。
使用此查询我发现大约 100 张图片没有 material.
select p.id, p.name
from pictures as p
left outer join pictures_materials as pm on p.id = pm.picture_id
where pm.picture_id is null;
我现在想做的是在 pictures_materials 中为每张图片插入一行 material。
所以,假设这些是一些没有 materials 的图片:
picture_21, picture_22, picture_23
我想要:
picture_21 material_1
picture_21 material_2
picture_21 material_3
picture_21 material_4
...
是否可以在单个 INSERT INTO 查询中执行此操作?
Is it possible to do this in a single INSERT INTO query?
是的!
您找到了创建笛卡尔积的正当理由。为此,您将使用 CROSS JOIN
。试试这个查询。
-- insert into picture_materials
select dt.id, m.id
from (select p.id
from pictures as p
left outer join pictures_materials as pm on p.id = pm.picture_id
where pm.picture_id is null) dt
cross join materials
验证 Select 语句 returns 所需数据后,取消注释 INSERT 语句并再次执行。
不确定如何写问题。
我有这 3 个表:
PICTURES
id
name
MATERIALS
id
name
PICTURES_MATERIALS
picture_id
material_id
我有几千张图片和 5 个 material,大多数图片都有 material。 使用此查询我发现大约 100 张图片没有 material.
select p.id, p.name
from pictures as p
left outer join pictures_materials as pm on p.id = pm.picture_id
where pm.picture_id is null;
我现在想做的是在 pictures_materials 中为每张图片插入一行 material。 所以,假设这些是一些没有 materials 的图片:
picture_21, picture_22, picture_23
我想要:
picture_21 material_1
picture_21 material_2
picture_21 material_3
picture_21 material_4
...
是否可以在单个 INSERT INTO 查询中执行此操作?
Is it possible to do this in a single INSERT INTO query?
是的!
您找到了创建笛卡尔积的正当理由。为此,您将使用 CROSS JOIN
。试试这个查询。
-- insert into picture_materials
select dt.id, m.id
from (select p.id
from pictures as p
left outer join pictures_materials as pm on p.id = pm.picture_id
where pm.picture_id is null) dt
cross join materials
验证 Select 语句 returns 所需数据后,取消注释 INSERT 语句并再次执行。