SQL提取用户组ID,仅包括指定的用户ID

时间:2013-12-04 00:58:19

标签: mysql sql join

我有三个表,用户表,用户组表以及用户和用户组的连接表为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;

1 个答案:

答案 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运算符)