查询选择所选记录的公共部分

时间:2013-07-17 14:46:21

标签: sql vba

我在构造简单查询时遇到了问题,我觉得只有非常复杂的使用计数功能。

这是表:

ID | A | B
-----------
 1 | 1 | 1
 2 | 1 | 2
 3 | 1 | 3
 4 | 1 | 4
 5 | 2 | 1
 6 | 2 | 2
 7 | 2 | 5
 8 | 2 | 6
 9 | 3 | 1
10 | 3 | 3
11 | 3 | 7

我需要从每个选定的A中存在的值B中获取。 因此,例如从该表中A = 1和2输出是B = 1和2

我的计划是使用函数IN获取选定A中的所有B。然后使用函数COUNT来计算每个B,如果它等于所选A的数量,那么它就是正确的。

我的第二个基于循环。我使用VBA,所以第一个查询将是找到所有B,其中A = 1,然后从上一步找到的所有B中找到,其中A = 2,依此类推。 然而,这将非常复杂。

您对此有何看法。

感谢您的回复。

示例:

A in {1,2} => Output: B = {1,2},
because B = 1 is with A = 1 for ID = 1
and B = 1 is with A = 2 for ID = 5
(similar way with B = 2)
B = 3 is with A = 1 for ID = 3, but it is not with B for any ID
A in {1, 2, 3} => Output: B = {1},
A in {1, 3} => Output: B = {1, 3},
A in {2, 3} => Output: B = {1}

1 个答案:

答案 0 :(得分:0)

SELECT b.b 
FROM (SELECT b FROM tablex WHERE A = val1) a
JOIN (SELECT b FROM tablex WHERE A = val2) b ON a.b=b.b

未测试。