我有三个表,用户表,用户组表以及用户和用户组的连接表为user_groups_users。
user_group_ids | user_ids
1 1
1 2
1 3
2 1
2 2
现在,我只想要那些只包含1和2个user_ids的user_group_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;
答案 0 :(得分:1)
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运算符)