假设我有一个表 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(使用前将#替换为@)