我有三个表,用户表、用户组表以及用户和用户组作为 user_groups_users 的联接表。
user_group_ids | user_ids
1 1
1 2
1 3
2 1
2 2
现在,我只想要那些 user_group_ids,其中仅包含 1 和 2 个 user_ids。因此,对于上面的示例,它应该只输出“2”user_group_id,而不是 1,因为它还包括 user_id 3。
那么,什么是 SQL 查询才能获得正确的输出。 我能想到的最好的办法是
SELECT user_group_id FROM user_groups_users WHERE user_id IN (1, 2) GROUP BY user_group_id HAVING Count(DISTINCT user_id) = 2;
最佳答案
SELECT user_group_ids
FROM user_groups
GROUP
BY user_group_ids
HAVING SUM(CASE WHEN user_ids IN (1,2) THEN 1 ELSE 0 END) = COUNT(*);
或者只是
SELECT user_group_ids
FROM user_groups
GROUP
BY user_group_ids
HAVING SUM(user_ids IN (1,2)) = COUNT(*);
(我假设 (user_ids,user_group_ids) 是 PK 的组成部分。如果不是,那么您可能需要包含 DISTINCT 运算符)
关于mysql - SQL 提取用户组 ID,仅包含指定的用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20364835/