【问题标题】:MySQL query for Intersect-like functionMySQL 查询类似 Intersect 的函数
【发布时间】:2011-03-07 13:58:15
【问题描述】:

我有一个 Person 表、Group 表和 Group_Person 表,其中许多人员实体可以有许多组实体。 Group_Person 作为中间表,有一个元组 (group_id, person_id) 映射到 Group 表的 group_id 和 Person 表的 person_id。

给定来自 Person 表的 0 个或多个 person_id(从 Person 表中查询),我想从 Group 表中找到所有 Groups,在 Group_Person 表中,每个 person_id 都有一个元组 (group_id, person_id)。换句话说,每个 person_ids 都映射到一个公共 group_id。

由于 MySQL 没有 INTERSECT 函数,我正在考虑执行以下查询(仅返回 group_id):

SELECT t1.group_id 
FROM Group_Person AS t1 
JOIN Group_Person AS t2 ON t1.group_id = t2.group_id 
WHERE t1.person_id = xxx AND t2.person_id = yyy;

同样,这里可以有 0 个或多个 person_id。这是最好的解决方案吗?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    我不认为多次加入 group_person 会为你做这件事。你可能想要这样的东西:

    SELECT group_id
    FROM Group_Person
    WHERE person_id in(put the ids here)
    GROUP BY group_id
    HAVING count(group_id) = the count of person_ids
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多