代码之家  ›  专栏  ›  技术社区  ›  Carlo

如何将两个查询中的数据插入到关系表中

  •  0
  • Carlo  · 技术社区  · 7 年前

    我不知道该怎么写这个问题。

    我有这3张桌子:

    PICTURES
    id
    name
    
    MATERIALS
    id
    name
    
    PICTURES_MATERIALS
    picture_id
    material_id
    

    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;
    

    假设这些是一些没有材料的图片:

    picture_21, picture_22, picture_23
    

    我想要:

    picture_21 material_1
    picture_21 material_2
    picture_21 material_3
    picture_21 material_4
    ...
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   Kevin Bott    7 年前

    您已经找到了创建笛卡尔乘积的合法理由。为此,您将使用 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