理论上我有两个表:用户,带有第三个表user_group的组加入它们(告诉哪个用户在哪个组中)。
以下是组的结构(树状):
1根
1.1 child1
1.2 child2
所有用户至少被分配到root
组。此外,它们可能(但不是必须)分配给作为根组子级的不同组(例如,child1或child2)。
鉴于组ID,我想检索只有该组ID的用户。有趣的部分是以下场景:如果提供了根组的ID,我们应该只检索根组中存在的用户 - 它们不应该是任何其他子组的成员。
答案 0 :(得分:0)
还有另一种令人讨厌的方式:
SELECT *
FROM (
SELECT idUser, idGroup
FROM UserGroup
GROUP BY idUser
HAVING COUNT(idGroup) < 2
)
WHERE idGroup = <group's id you're looking for>
我说烦恼因为我不喜欢双选择。
下面的旧答案:
使用这样的结构:
Users UserGroup Groups
------ ----------- ------
idUser idUserGroup idGroup
idUser
idGroup
你可以试试这个:
SELECT DISTINCT idUser
FROM UserGroup AS UG
WHERE UG.idGroup=1
GROUP BY UG.idGroup
1 ,在中子句是 idGroup ,您要搜索:
WHERE UG.idGroup=<idGroup>