如何找到与定义值匹配的确切组?

时间:2012-06-01 13:29:25

标签: mysql sql

我简化了表格,因此更容易理解。

我有一个包含组的表,一个包含多个值的组。这是表格:

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

1 个答案:

答案 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)。

演示:http://www.sqlfiddle.com/#!2/78def/13