是否可以在一个查询中测试多个用户是否在同一个组中?
说我有一个看起来像这样的数组:
$users = array(1,3,4,5);
我想动态编写一个查询(以便它可以处理任意数量的用户),这将基本上检查是否存在包含所有这些用户的组,并且只有这些用户已经存在。如果是这样,请返回id。如果没有,请返回0.
表结构如下:
groups:
group_id
groups_users
user_id
group_id
这可能吗?
答案 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_id
和groups_users.group_id
是唯一键,如果此组存在,则count(*)
的结果应等于len($users)
。