我有三张桌子:
用户
id | name
------------------
1 | Foo
2 | Bar
3 | Baz
组类型
id | name
------------------
1 | Group 1
2 | Group 2
3 | Group 3
4 | Group 4
5 | Group 5
用户组
id | user_id | group_type_id | [..]
------------------------------------
1 | 1 | 1 | [..]
2 | 1 | 3 | [..]
3 | 2 | 1 | [..]
4 | 1 | 5 | [..]
5 | 2 | 3 | [..]
6 | 3 | 3 | [..]
好吧,目前,我可以使用 union 从指定的组列表中找到所有用户,这就像一个“或”子句:
SELECT u.*
FROM user u,
user_group ug
WHERE ug.user_id = u.id
AND ug.group_type_id IN( 1, 3, 5 )
结果:
id | name
------------------
1 | Foo
2 | Bar
3 | Baz
现在,我需要与 gorup 相交,找到所有类型为 1 和 3 的用户,结果是:
id | name
------------------
1 | Foo
2 | Bar
我已经尝试了一些查询,但没有想象出正确执行此操作的方法。