查询关联N-N

时间:2016-08-22 09:20:01

标签: sql database foreign-keys

我的数据库上有表格如下:

enter image description here

NB:
ID_A外键引用A(ID)
ID_B外键引用B(ID)

现在我的问题是:
假设有一个A id列表,如{12,15,26},我想找到B的所有值,将所有值与集合相关联。 我可以这样做:

select ID_B from AB where ID_A = 12
intersect
select ID_B from AB where ID_A = 15
intersect
select ID_B from AB where ID_A = 26

但它并不那么表现和优雅。这是正确的方法吗?

如果我想找到具有最大n个错误的集合中的值的结果? (例如,n = 2 - >查找具有集合中所有值的所有记录以及所有具有+2(最多两个值)和-2(在减法中最多两个值)的记录集合中的值。)

1 个答案:

答案 0 :(得分:1)

执行GROUP BY,使用HAVING确保找到所有不同的ID_A值:

select ID_B
from AB
where ID_A in (12, 15, 26)
group by ID_B
having count(distinct ID_A) = 3