检查一列是否包含另一列的所有值 - Mysql

2024-03-25

假设我有一个表 T1,其中包含人员 ID 和其他内容 ID,如下所示

Table: T1
personID | stuffID 
    1    |    1
    1    |    2
    1    |    3
    1    |    4
    2    |    1
    2    |    4
    3    |    1
    3    |    2

另一个表 T2 只有一列 stuffID

Table: T2
stuffID
   1  
   2  
   3  

我会得到的结果是SELECT,是与 T2 的所有 stuffID 连接的 peopleID 表。

按照该示例,结果将仅为 id 1(即使关联的所有 stuffID 都包含在 T2.stuffID 中,personID 3 也不会出现)。


如果我理解正确的话,您想要从 T1 检索所有在 T2 中找到的所有关联 stuffID 的 personID。

您可以将其分解如下: 首先,找到与嵌套查询匹配的所有 T1 条目

SELECT personID 
FROM T1 WHERE stuffID IN (SELECT stuffID FROM t2)

现在您需要检查该集合中的哪些条目包含您想要的所有 stuffID

GROUP BY personID
HAVING COUNT(DISTINCT stuffID) = (SELECT COUNT(stuffID) FROM t2)

并将它们放在一起:

SELECT personID 
FROM T1 WHERE stuffID IN (SELECT stuffID FROM t2)
GROUP BY personID
HAVING COUNT(DISTINCT stuffID) = (SELECT COUNT(stuffID) FROM t2)

HTH.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查一列是否包含另一列的所有值 - Mysql 的相关文章

随机推荐