mysql - 测试多个用户是否在同一个组中

时间:2014-07-20 08:14:59

标签: mysql sql database

是否可以在一个查询中测试多个用户是否在同一个组中?

说我有一个看起来像这样的数组:

 $users = array(1,3,4,5);

我想动态编写一个查询(以便它可以处理任意数量的用户),这将基本上检查是否存在包含所有这些用户的组,并且只有这些用户已经存在。如果是这样,请返回id。如果没有,请返回0.

表结构如下:

 groups:
      group_id

 groups_users
      user_id
      group_id

这可能吗?

1 个答案:

答案 0 :(得分:2)

SELECT group_id, count(*) AS c
FROM group_users
WHERE user_id IN (1, 3, 4, 5)
GROUP BY group_id
HAVING c = ?; /* Replace ? with len($users) */

假设groups_users.user_idgroups_users.group_id是唯一键,如果此组存在,则count(*)的结果应等于len($users)