存在的SQL子查询

时间:2018-03-09 12:24:41

标签: sql subquery exists

我有一个可用3个表格描述的场景;成员,角色和成员。 Memberrole是其他两个的交集,我想用外连接(来自成员和角色)完全填充它。这很容易。

现在我希望能够为新成员或新角色更新交集。

我想要完成的任务看起来像这样(但语法不正确):

insert into memberrole (memberid,roleid)  
    select member.memberid, role.roleid 
    from member, role 
    where member.memberid, roleid not exists (select memberid, roleid 
                                              from memberrole)

......有什么建议吗? 感谢

1 个答案:

答案 0 :(得分:0)

INSERT into memberrole (memberid,roleid)
SELECT m.memberid, r.roleid
FROM member m
JOIN zrole r -- carthesian product MINUS the inner product
        ON NOT EXISTS (select *
        FROM memberrole mr
        WHERE mr.memberid = m.memberid
        AND mr.roleid = r.roleid
    );

注意:role是保留字。我将其替换为zrole