3

わかりやすくするために表を簡略化しました。

グループのあるテーブルがあり、複数の値のグループが存在します。表は次のとおりです。

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
4

1 に答える 1

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

于 2012-06-01T13:38:17.933 に答える