我想知道如何基于另一个查询结果来构建查询。
例如:
我将此表命名为groups:
group_id | user_id | is_admin
146 | 1 | 1
146 | 3 | 1
146 | 6 | 1
146 | 7 | 1
102 | 21 | 1
105 | 174 | 1
109 | 369 | 1
因此,我执行此查询以基于user_id获取所有组
SELECT * FROM groups WHERE user_id = 6;
结果是?
group_id | user_id | is_admin
146 | 6 | 1
但是,我现在想获取所有基于group_id的组。所以,我想 执行此查询:
SELECT * FROM groups where group_id = 146;
因此,我有以下查询结果:
group_id | user_id | is_admin
146 | 1 | 1
146 | 3 | 1
146 | 6 | 1
146 | 7 | 1
在简历中,我想找到哪个组或用户所属并选择包含其group_id的所有行
1-SELECT * FROM groups WHERE user_id = 6;
2-SELECT * FROM groups WHERE groups in (146,102, ...);
注意:user_id可以属于多个组。
谢谢。
答案 0 :(得分:1)
如果您只希望每个用户一组(如您的示例数据中所示),请使用=
和一个子查询:
select g.*
from groups g
where g.group_id = (select g2.group_id from groups g2 where g2.user_id = 6);
如果用户可以在多个组中,请使用in
:
select g.*
from groups g
where g.group_id in (select g2.group_id from groups g2 where g2.user_id = 6);