确定3个表,用户,组和用户组。
重要的列是Users.UserID,Groups.GroupID,UserGroups.UserID和UserGroups.GroupID。
我有一个组,我们称之为'A'组,这个组中有很多用户,因为有很多行的UserGroup,其中GroupID是组'A'的GroupID。
现在,对于没有此UserGroup关联的所有用户,我想为组'B'插入新的UserGroup关联。
因此,将不在组'A'中的所有用户放入组'B'中,当存在具有该UserID且存在GroupID的UserGroup时,用户就在组中。
如何编写一个查询,为所有尚未拥有GroupID为Group'A组的UserGroup的用户插入UserID的UserGroup和Group'B'的GroupID?
另外,如何在排除中添加其他GroupID?这意味着是否还有一个组'C',我只想将用户添加到既不是'A'又不是'C'的'B'组?
答案 0 :(得分:1)
这对你有用吗?
INSERT INTO UserGroups (GroupID, UserID)
SELECT g.GroupID, u.UserID
FROM Users u
CROSS JOIN Groups g
WHERE g.Group = 'B'
AND u.UserID NOT IN
(SELECT u2.UserID
FROM Users u2
JOIN UserGroups ug2 on u2.UserID = ug2.UserID
JOIN Groups g2 on g2.GroupID = ug2.Group_ID
WHERE g2.Group in ('A')
)
排除其他群组时,您可以将WHERE g2.Group in ('A')
更改为WHERE g2.Group in ('A', 'C')
。