我简化了表格,因此更容易理解。
我有一个包含组的表,一个包含多个值的组。这是表格:
VALUE | GROUP
A | 1
B | 1
A | 2
C | 2
B | 3
A | 4
B | 4
A | 5
B | 5
C | 5
我想给我的查询赋值,我以编程方式构建并找到与这些值匹配的确切组。
例如,如果我将值A和B赋给我的查询,我想作为结果组1和4
A ---------------> null
A and B ----------> 1 and 4
A , B and C ------> 5
B ---------------> 3
A and C ----------> 2
C ----------------> null
答案 0 :(得分:3)
您可以使用如下查询(假设值,组对唯一):
select `GROUP`
from MyTable
group by `GROUP`
having count(`VALUE`) = count(case when `VALUE` IN ('a','b') then 1 end)
and count(case when `VALUE` IN ('a','b') then 1 end) = @Count;
('a','b')
将是您要测试的值列表,@Count
将是您的检查集中的不同值的计数(在本例中为2)。