0

我在构建简单查询时遇到问题,我想到的只是使用计数函数非常复杂。

这是表:

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 取出所有 B,它们在选定的 A 中。然后使用函数 COUNT 对每个 B 进行计数,如果它等于所选 A 的数量,则它是正确的。

我的第二个是基于循环。我使用 VBA,所以第一个查询将是找到 A=1 的所有 B,然后从上一步中找到的所有 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}
4

1 回答 1

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

未经测试。

于 2013-07-17T17:29:23.270 回答