我有一个用户表和一个组表以及一个将用户与组链接的表。默认组称为“所有用户”。所有新用户都被放置在这个组中。然后将它们链接到更具体的组,例如销售或采购等,但它们也保留在“所有用户”中。我想查询“所有用户”组中的所有用户,但不是任何其他组的成员。
我希望我解释得足够好。
谢谢,鲍勃
SELECT userid, count(*) group_count
FROM user_groups
GROUP BY userid
HAVING group_count = 1
如果用户仅在一个组中,则它必须是 All Users 组,并且仅列出这些用户。
这是假设您的名为 AllUsers 的表对每个名为 id 的用户都有一个唯一的 id,并且您的 Group 表有一个链接到 AllUsers.id 的外键 userId。
SELECT * FROM AllUsers WHERE AllUsers.id != userId;
如果我理解你的问题,那应该这样做。
你有三张桌子,说:
tblUser: userid, username
tblgroup: groupid, groupname
tblUserGroup: fkuserid, fkgroupid
创建新用户时,应自动在 中创建记录,将和tblUserGroup
链接起来。userid
groupid
当用户添加一个新组时,您只需添加一个tblUserGroup
相同userid
的和新的记录groupid
。您不需要删除第一条记录,因为它们现在在两个组中。