MySQL选择在其他表中有两个匹配项的列

时间:2013-09-10 18:36:44

标签: mysql

如果这个问题已经解决了,我很抱歉,但我不知道如何正确地说出问题或者我应该搜索什么。

所以我有两张桌子:

id | name

成员

id | user_id | group_id

我要做的是找到id为1的用户所属的所有组,并且id为2的用户也是其成员。 显然这不起作用:

SELECT groups.id FROM groups, memberships WHERE groups.id = memberships.group_id AND memberships.user_id = 1 AND memberships.user_id = 2;

我希望你理解我的问题,我很难找到合适的问题。随意问。

编辑:两个用户都应该是该组的成员。

3 个答案:

答案 0 :(得分:1)

如果我理解得很好,你需要两个用户都是成员的小组吗?

类似的东西:

SELECT g1.id 
FROM groups g1, memberships m1, groups g2, memberships m2
WHERE m1.group_id = g1.id AND m1.user_id = 1
AND m2.group_id = g2.id AND m2.user_id = 2
AND g1.group_id = g2.group_id;

答案 1 :(得分:0)

只需将上一个AND替换为OR,然后将user_id的测试放入(,就像这样:

SELECT groups.id 
FROM groups, memberships 
WHERE groups.id = memberships.group_id 
AND (memberships.user_id = 1 OR memberships.user_id = 2);

答案 2 :(得分:0)

试试这个:

SELECT * 
FROM   groups g 
       INNER JOIN memberships m 
               ON m.group_id = g.id 
WHERE  m.user_id = '1' 
        OR m.user_id = '2' 
相关问题