如何根据另一个查询结果进行查询

时间:2019-06-03 15:04:51

标签: mysql sql

我想知道如何基于另一个查询结果来构建查询。

例如:

我将此表命名为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可以属于多个组。

谢谢。

1 个答案:

答案 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);