Mar*_*rco 8 mysql sql relational-division
假设我有一个带有人员ID和其他东西ID的表T1,如下所示
Table: T1
personID | stuffID
1 | 1
1 | 2
1 | 3
1 | 4
2 | 1
2 | 4
3 | 1
3 | 2
Run Code Online (Sandbox Code Playgroud)
另一个表T2只有一列stuffID
Table: T2
stuffID
1
2
3
Run Code Online (Sandbox Code Playgroud)
我得到的结果是,一个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)
Run Code Online (Sandbox Code Playgroud)
现在,您需要检查此集合中的哪些条目包含所需的所有stuffID
GROUP BY personID
HAVING COUNT(DISTINCT stuffID) = (SELECT COUNT(stuffID) FROM t2)
Run Code Online (Sandbox Code Playgroud)
并把它们放在一起:
SELECT personID
FROM T1 WHERE stuffID IN (SELECT stuffID FROM t2)
GROUP BY personID
HAVING COUNT(DISTINCT stuffID) = (SELECT COUNT(stuffID) FROM t2)
Run Code Online (Sandbox Code Playgroud)
HTH。
| 归档时间: |
|
| 查看次数: |
11666 次 |
| 最近记录: |