PHP SQL选择ID数组中的位置并具有相同的变量列值

时间:2016-04-27 18:45:51

标签: php mysql sql

所以我有一张类似下面的表格。

+----+----------+---------+
| ID | group_id | user_id |
+----+----------+---------+
|  1 |       10 |       9 |
|  2 |       20 |       8 |
|  3 |       10 |       7 |
|  4 |       10 |       6 |
|  5 |       20 |       5 |
+----+----------+---------+

我有一组用户ID [9,7,6],我想获得所有ID在同一组中的组ID?

我当前的查询:

SELECT group_id FROM group_user WHERE user_id IN (9,7,6) GROUP BY group_id

请记住,我并不过分熟悉SQL查询。

由于

修改

我已经打开了一个更详细和我的目标的新问题。

SQL, check if conversation exists between group

3 个答案:

答案 0 :(得分:1)

您可以使用条件聚合来查找group_id,其中包含与之关联的必需user_id。

SELECT group_id 
FROM group_user 
group by group_id
having sum(case when user_id IN (9,7,6) then 1 else 0 end) = 3

答案 1 :(得分:0)

您的查询应该是:

SELECT DISTINCT(group_id) FROM group_user WHERE user_id IN (9,7,6)

答案 2 :(得分:0)

SELECT group_id 
FROM group_user 
WHERE user_id IN (9,7,6) 
GROUP BY group_id
HAVING count(DISTINCT user_id) = 3
AND count(DISTINCT group_id) = 1

确保所有3个ID都在同一个group_id中,并且它们不在任何其他组中。

http://sqlfiddle.com/#!9/540f96/2