小编典典

从表B获取所有与表A的多个条目(给定列表)相关的条目

sql

我有两张桌子。表A和表B。两者都有多对多的关系。

表A:

ID
---
1
2

表B:

ID
---
3
4

表AB:

ID | A_ID | B_ID
----------------
5  | 1    | 4
6  | 1    | 3
7  | 2    | 3

我想要得到的名单ID,从表S =B该有关系 的名单ID表第A

上表中的示例:

我想所有B这些都表的关系小号A ID1和ID2,我得到那么ID3具有这两个ID表第A

如何使用SQL查询做到这一点?


阅读 158

收藏
2021-04-07

共1个答案

小编典典

如果要基于“不作为”列表(而不是“全部”作为)进行选择,请按照以下步骤操作:

SELECT b_id
FROM ab
WHERE a_id IN (1,2)
GROUP BY b_id
HAVING COUNT(a_id) = 2

(1,2)用您的列表替换,并2在having子句中替换为列表项的数量。

如果从子查询中获得As的列表,则可以这样做(尽管不是在MySQL中…):

WITH subquery (
 --subquery code here
)

SELECT b_id
FROM ab
WHERE a_id IN subquery
GROUP BY b_id
HAVING COUNT(a_id) = (SELECT COUNT(*) FROM subquery)

在MySQL中,您必须将子查询代码放入两次,并删除WITH子句。

您还可以使用一个临时表,这将导致从该临时表中选择“全部为”,因此Gordon Linoffs会回答…

2021-04-07